" /> " /> JoomThumbnail
Головна SQL Group By

GROUP BY

Синтаксис SQL GROUP BY

SELECT , aggregate_function()
FROM table_name
WHERE  operator value
GROUP BY 

Приклад SQL GROUP BY

Є наступна таблиця "Orders":

O_IdOrderDateOrderPriceCustomer
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

Тепер ми хочемо знайти загальну суму замовлення для кожного клієнта.

1
2
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

CustomerSUM (OrderPrice)
Hansen 2000
Nilsen 1700
Jensen 2000

1
SELECT Customer,SUM(OrderPrice) FROM Orders

CustomerSUM (OrderPrice)
Hansen 5700
Nilsen 5700
Hansen 5700
Hansen 5700
Jensen 5700
Nilsen 5700

Використання GROUP BY для кількох колонок

1
2
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate

Коментарі

 
+8 #1 seitbekir 2009-11-20 17:32 спасибі! от тільки як в циклі виводити, також як і завжди? Цитувати
 
 
+19 #2 Lightxlampa 2010-03-14 13:42 Спасибі, відмінний приклад! Нарешті цей запит зрозумів. Цитувати
 
 
-7 #3 Анна 2010-08-03 12:17 а як вивести для кожного клієнта дату останнього замовлення із зазначенням вартість цього замовлення? Цитувати
 
 
-4 #4 ageent 2010-08-03 18:50 пріблізно так SELECT Customer, OrderDate, OrderPrice FROM Orders GROUP BY Customer ORDER BY OrderDate DESC Цитувати
 
 
-8 #5 STEREOLOVER.CS 2010-08-10 09:57 Народ б'юся вже купу часу. Є запит, який об'єднує три таблиці. Нехай вони будуть називатися car, box і load. Об'єднані вони з використанням left join
см см см м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
Lamborghini yashtik 15 березня 15 20 Картопля 0,1
Lamborghini yashtik 15 березня 15 20 Марківка 0,15
Lamborghini yashtik 4 жовтня 10 жовтня нуль нуль
Там де нул як ви здогадуєтеся ящик без вантажу. Завдання наступна. Потрібно обчислити об'єм всіх ящиків і обсяг всіх вантажів і групувати це все по імені машини.

car.name box_volume load_volume

ламборджині 0,7 0,25
PS в box_volume не розраховував точно, а поставив цифри від балди. Динячі вище тільки для прикладу як має виглядати у підсумку.

Сам запит виглдядіт приблизно так:
виберіть car.name

з автомобіля, коробка ліве об'єднання навантаження на box.id = load.box_id

групи car.name

Став на, те що не можу порахувати обсяг всіх ящиків, т.к. якщо просто вказати SUM (box.height * box.width * box.depth) / 1000000 у мене об'єм ящика 3 порахується 2 рази, а якщо використовувати вкладений запит для вибору тільки відповідних рядків з box між select і where, то GROUP BY car. name не групуються дані з підзапиту: (Підкажіть як можна вирішити дану задачу?
Цитувати
 
 
+6 #6 Шелест Константин 2010-10-29 00:50 спс! доступно пояснюєте))) Цитувати
 
 
-5 #7 Артур Пирожков 2011-04-19 13:53 До наприклад odna фірми zaregistrirovan а в 3-х категоріях каталогу. У таблиці це виглядає так:

категорії фірми

Реклама Mediagrup
Створення сайтів Медиагруп
Raskrutka sajtív Mediagrup

На виході має виглядати так:

Назва фірми Категорія
-
Mediagrup Реклама
Створення сайтів
Raskrutka сайтів
-

Чи можна це реалізувати за допомогою group? Або який запит тут потрібно використовувати і як його правильно обробити засобами php?
Цитувати
 
 
0 #8 Рамиль 2011-04-27 12:01 Чогось я не зрозумію. Підсумовує два стовпці 20 +5 у мене виходить 20 та 5 а не 25. Підкажіть хто небудь .. як цю бяку підсумувати. Цитувати
 
 
+5 #9 Lirriella 2011-06-22 14:40 Спасибі велике, нарешті, зрозуміла, що робить group by! Цитувати
 
 
0 #10 Максим 2011-11-23 14:28
пріблізно так SELECT Customer, OrderDate, OrderPrice FROM Orders GROUP BY Customer ORDER BY OrderDate DESC

Цитувати
 

Авторизація

Nice Ajax Poll

Яке з моїх розширень найкраще?

Статистика

Реклама