Запрос с группировкой - 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— группировка данных по значению столбцаwebmasterinto 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— функция агрегации, используемая для группировки значений столбца