GROUP BY - данный запрос используется для группирования результата одного или нескольких столбцов.
Синтаксис SQL GROUP BY
Пример SQL GROUP BY
Есть следующая таблица "Orders":
| O_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/11/12 | 1000 | Hansen |
| 2 | 2008/10/23 | 1600 | Nilsen |
| 3 | 2008/09/02 | 700 | Hansen |
| 4 | 2008/09/03 | 300 | Hansen |
| 5 | 2008/08/30 | 2000 | Jensen |
| 6 | 2008/10/04 | 100 | Nilsen |
Теперь мы хотим найти общую сумму заказа для каждого клиента.
Выполним запрос:
Результат запроса:
| Customer | SUM(OrderPrice) |
|---|---|
| Hansen | 2000 |
| Nilsen | 1700 |
| Jensen | 2000 |
Теперь давайте посмотрим, что произойдет, если мы не используем запрос GROUP BY:
Результат запроса:
| Customer | SUM(OrderPrice) |
|---|---|
| Hansen | 5700 |
| Nilsen | 5700 |
| Hansen | 5700 |
| Hansen | 5700 |
| Jensen | 5700 |
| Nilsen | 5700 |
SQL Group By





Комментарии
см см см м3
car.name box.name box.height box.width box.depth load.name load.volume
жигули ящик 1 20 30 50 корова 0,5
жигули ящик 2 10 50 10 свинья 0,2
ламборгини ящик 3 15 15 20 картошка 0,1
ламборгини ящик 3 15 15 20 марковка 0,15
ламборгини ящик 4 10 10 10 null null
Там где нул как вы догадываетесь ящик без груза. Задача следующая. Нужно вычислить объём всех ящиков и объём всех грузов и группировать это всё по имени машины.
car.name box_volume load_volume
жигули 1,1 0,7
ламборгини 0,7 0,25
P.S. в box_volume не рассчитывал точно, а поставил цифры от балды. Дынные выше только для примера как должно выглядеть в итоге.
Сам запрос выглдядит примерно так:
select car.name
from car, box left join load on box.id=load.box_id
where…
group by car.name
Стал на, том что не могу посчитать объём всех ящиков, т.к. если просто указать SUM(box.height*box.width*box.depth)/1000000 у меня объём ящика 3 посчитается 2 раза, а если использовать вложенный запрос для выбора только подходящих строк из box между select и where, то GROUP BY car.name не группирует данные из подзапроса :( Подскажите как можно решить данную задачу? Цитировать
category firm
———————————————————
Реклама Медиагруп
Создание сайтов Медиагруп
Раскрутка сайтов Медиагруп
На выходе должно выглядеть так:
Название фирмы Категория
———————————————————-
Медиагруп Реклама
Создание сайтов
Раскрутка сайтов
———————————————————-
Можно ли это реализовать при помощи group? Или какой запрос здесь нужно использовать и как его правильно обработать средствами php ? Цитировать
Тоже ищу как вывести для каждого клиента дату последнего заказа с указанием стоимость этого заказа.. но этот sql запрос не подходит, т.к. выполняется сначала GROUP BY, а потом ORDER BY. Будет признателен, если кто-нибудь поможет с этим запросом… Цитировать