Запрос с группировкой - 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
— функция агрегации, используемая для группировки значений столбца
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д