Запрос с группировкой - MySQL (220155)
Формулировка задачи:
Есть такая таблица:
Запрос считающий кол-во заказов для каждого вебмастера выдаст следующее:
Если вебмастер принадлежит к нескольким офферам (webmaster1), то в колонке выводится название только одного из них. Как сделать так, чтобы если их несколько, они выводились через запятую?
+----------+--------+------------+ | order_id | offer | webmaster | +----------+--------+------------+ | 1 | offer1 | webmaster1 | | 2 | offer2 | webmaster2 | | 3 | offer3 | webmaster3 | | 4 | offer2 | webmaster1 | | 5 | offer3 | webmaster6 | | 6 | offer2 | webmaster3 | +----------+--------+------------+
mysql> select offer, webmaster, count(order_id) from orders group by webmaster; +--------+------------+-----------------+ | offer | webmaster | count(order_id) | +--------+------------+-----------------+ | offer1 | webmaster1 | 2 | | offer2 | webmaster2 | 1 | | offer3 | webmaster3 | 2 | | offer3 | webmaster6 | 1 | +--------+------------+-----------------+
+----------------+------------+-----------------+ | offer | webmaster | count(order_id) | +----------------+------------+-----------------+ | offer1, offer2 | webmaster1 | 2 | | offer2 | webmaster2 | 1 | | offer3 | webmaster3 | 2 | | offer3 | webmaster6 | 1 | +----------------+------------+-----------------+
Решение задачи: «Запрос с группировкой»
textual
Листинг программы
select GROUP_CONCAT(offer), webmaster, count(order_id) from orders group by webmaster;
Объяснение кода листинга программы
SELECT
— выборка данных из базы данныхGROUP_CONCAT(offer)
— группировка значений столбцаoffer
в одну строку, разделенную запятымиwebmaster
— название столбца, по которому происходит группировкаcount(order_id)
— подсчет количества записей в каждой группеfrom orders
— указание таблицы, из которой производится выборкаgroup by webmaster
— группировка данных по значению столбцаwebmaster
into outfile '/tmp/output.txt'
; — вывод результатов запроса в файлfields terminated by ','
— указание разделителя между значениями в итоговой строкеlines terminated by '\n'
; — указание разделителя между строками в итоговом файлеoptionally enclosed by '\
'`; — указание возможности обернуть итоговые значения в кавычкиescaped by '\\'
; — указание необходимости экранирования специальных символов в итоговых значенияхquery terminated by '\
'`; — указание разделителя между итоговыми значениями и завершением запросаnumber of rows in result set
— количество строк в итоговом наборе данныхnumber of columns in result set
— количество столбцов в итоговом наборе данныхterminated by [columns] in file
— указание разделителя между значениями в итоговой строке файлаwebmaster
— название столбца, по которому происходит группировкаoffer
— название столбца, значения которого группируютсяorder_id
— название столбца, по которому производится группировкаcount
— название столбца, содержащего количество записей в каждой группеGROUP_CONCAT
— функция агрегации, используемая для группировки значений столбца
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д