Как красиво вывести данные

129
02 декабря 2020, 23:50

Есть таблица какие люди когда приходят. В таблице данные лежат как на фото1

Как вывести как на фото2?

Answer 1

Здесь решаем две задачи.

Во-первых, следует в отдельном столбце num пронумеровать строки с людьми по каждому дню недели.

Во-вторых, создать pivot-таблицу, прогруппировав записи по столбцу num.

Код такой:

SELECT
  MAX(CASE WHEN day = 'понедельник' THEN name ELSE '' END) AS `понедельник`,
  MAX(CASE WHEN day = 'вторник' THEN name ELSE '' END) AS `вторник`,
  MAX(CASE WHEN day = 'среда' THEN name ELSE '' END) AS `среда`
FROM (
  SELECT 
      @row_number:=CASE
          WHEN @day_name = day THEN @row_number + 1
          ELSE 1
      END AS num,
      @day_name:=day as day,
      name
  FROM
      test
  ORDER BY day, name
) t
GROUP BY num

Данное решение работает на любой версии MySQL. Для MySQL 8 оно может быть прооптимизировано.

Рабочий пример - на SQLFiddle

READ ALSO
Как сделать правильно запрос к таблице?

Как сделать правильно запрос к таблице?

Как сделать запрос так что бы в результате мне вышла таблица где product_id соответствовал бы одновременно 2 условиям например attribute_id = 12 и attribute_id...

142
Не удается подключиться к базе данных через intellij idea

Не удается подключиться к базе данных через intellij idea

Пытаюсь подключиться к базе данных через intellij idea, при нажатии на test connection получаю ошибку Connection to MySQL - mydb@localhost failed[08001] Could not create connection to database...

131
SELECT * FROM (SELECT …ORDER BY .. LIMIT)

SELECT * FROM (SELECT …ORDER BY .. LIMIT)

Есть MySQL запрос, выглядит так:

92