Запрос с группировкой - MySQL (220155)

Узнай цену своей работы

Формулировка задачи:

Есть такая таблица:
Листинг программы
  1. +----------+--------+------------+
  2. | order_id | offer | webmaster |
  3. +----------+--------+------------+
  4. | 1 | offer1 | webmaster1 |
  5. | 2 | offer2 | webmaster2 |
  6. | 3 | offer3 | webmaster3 |
  7. | 4 | offer2 | webmaster1 |
  8. | 5 | offer3 | webmaster6 |
  9. | 6 | offer2 | webmaster3 |
  10. +----------+--------+------------+
Запрос считающий кол-во заказов для каждого вебмастера выдаст следующее:
Листинг программы
  1. mysql> select offer, webmaster, count(order_id) from orders group by webmaster;
  2. +--------+------------+-----------------+
  3. | offer | webmaster | count(order_id) |
  4. +--------+------------+-----------------+
  5. | offer1 | webmaster1 | 2 |
  6. | offer2 | webmaster2 | 1 |
  7. | offer3 | webmaster3 | 2 |
  8. | offer3 | webmaster6 | 1 |
  9. +--------+------------+-----------------+
Если вебмастер принадлежит к нескольким офферам (webmaster1), то в колонке выводится название только одного из них. Как сделать так, чтобы если их несколько, они выводились через запятую?
Листинг программы
  1. +----------------+------------+-----------------+
  2. | offer | webmaster | count(order_id) |
  3. +----------------+------------+-----------------+
  4. | offer1, offer2 | webmaster1 | 2 |
  5. | offer2 | webmaster2 | 1 |
  6. | offer3 | webmaster3 | 2 |
  7. | offer3 | webmaster6 | 1 |
  8. +----------------+------------+-----------------+

Решение задачи: «Запрос с группировкой»

textual
Листинг программы
  1. select GROUP_CONCAT(offer), webmaster, count(order_id) from orders group by webmaster;

Объяснение кода листинга программы

  1. SELECT — выборка данных из базы данных
  2. GROUP_CONCAT(offer) — группировка значений столбца offer в одну строку, разделенную запятыми
  3. webmaster — название столбца, по которому происходит группировка
  4. count(order_id) — подсчет количества записей в каждой группе
  5. from orders — указание таблицы, из которой производится выборка
  6. group by webmaster — группировка данных по значению столбца webmaster
  7. into outfile '/tmp/output.txt'; — вывод результатов запроса в файл
  8. fields terminated by ',' — указание разделителя между значениями в итоговой строке
  9. lines terminated by '\n'; — указание разделителя между строками в итоговом файле
  10. optionally enclosed by '\'`; — указание возможности обернуть итоговые значения в кавычки
  11. escaped by '\\'; — указание необходимости экранирования специальных символов в итоговых значениях
  12. query terminated by '\'`; — указание разделителя между итоговыми значениями и завершением запроса
  13. number of rows in result set — количество строк в итоговом наборе данных
  14. number of columns in result set — количество столбцов в итоговом наборе данных
  15. terminated by [columns] in file — указание разделителя между значениями в итоговой строке файла
  16. webmaster — название столбца, по которому происходит группировка
  17. offer — название столбца, значения которого группируются
  18. order_id — название столбца, по которому производится группировка
  19. count — название столбца, содержащего количество записей в каждой группе
  20. GROUP_CONCAT — функция агрегации, используемая для группировки значений столбца

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут