Відповіді:
ЗАМОВИТИ ЗА зміною порядку повернення предметів.
GROUP BY буде агрегувати записи за вказаними стовпцями, що дозволяє виконувати функції агрегації на негрупованих стовпцях (таких як SUM, COUNT, AVG тощо).
ЗАМОВИТИ ЗА зміною порядку повернення предметів.
GROUP BY буде агрегувати записи за вказаними стовпцями, що дозволяє виконувати функції агрегації на негрупованих стовпцях (таких як SUM, COUNT, AVG тощо).
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
стовпець, у якого Петерс різного віку, а запит - ВИБРАТИ ІМ'Я, ВІР ВІД ТАБЛИЧНОЇ ГРУПИ НА ІМ'Я?
ЗАМОВИТИ ЗА: сортування даних у порядку зростання або зменшення.
Розглянемо таблицю Клієнтів :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Нижче наводиться приклад, який сортуватиме результат у порядку зростання за NAME:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Це дасть такий результат:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
ГРУПУВАТИ ЗА: упорядкувати однакові дані по групах
Тепер у таблиці КЛІЄНТІ є такі записи із повторюваними іменами:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
якщо ви хочете згрупувати однакові імена в одне ім’я, то запит GROUP BY буде таким:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Це призведе до наступного результату: (для однакових імен він вибере останнє та нарешті сортувати стовпець у порядку зростання)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
як ви зробили висновок, що без функцій SQL, таких як sum, avg і т.д.
тому перегляньте це визначення, щоб зрозуміти правильне використання GROUP BY:
Становище GROUP BY працює на рядках, повернених запитом шляхом підсумовування однакових рядків у єдину / окрему групу та повертає один рядок із підсумком для кожної групи, використовуючи відповідну функцію Aggregate у списку SELECT, наприклад COUNT (), SUM (), MIN (), MAX (), AVG () тощо
Тепер, якщо ви хочете дізнатися загальну суму зарплати для кожного клієнта (ім'я), то запит GROUP BY буде таким:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Це дасть такий результат: (сума зарплат за однаковими іменами та сортування стовпця NAME після видалення однакових імен)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Різниця полягає саме в тому, що випливає з назви: група виконує операцію групування, а замовлення - за сортами.
Якщо це зробити, SELECT * FROM Customers ORDER BY Name
ви отримуєте список результатів, відсортований за іменем клієнтів.
Якщо ви SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
отримуєте кількість активних та неактивних клієнтів. Група шляхом агрегування результатів на основі вказаного поля.
Вони мають зовсім інше значення і насправді взагалі не пов'язані між собою.
СОРТУВАТИ ЗА дозволяє сортувати набір результатів за різними критеріями, наприклад спочатку сортувати за назвою від az, а потім сортувати за ціною, найвищою до найнижчої.
(ЗАМОВЛЕННЯ ПО ПІБ, ціна DESC)
GROUP BY дозволяє прийняти набір результатів, згрупувати його в логічні групи і потім запустити сукупні запити на ці групи. Наприклад, ви можете вибрати всіх співробітників, згрупувати їх за місцем їх роботи та обчислити середню зарплату всіх працівників кожного місця роботи.
Просто, ORDER BY
впорядковує дані та GROUP BY
групи або об'єднує дані.
ORDER BY
впорядковує набір результатів у згаданому полі за замовчуванням у порядку зростання.
Припустимо, що ви запускаєте запит як ORDER BY (student_roll_number)
, це покаже вам результат у порядку зростання номерів списку учнів. Тут student_roll_number
запис може відбуватися не один раз.
У GROUP BY
випадку, якщо ми використовуємо це за допомогою сукупних функцій, він групує дані відповідно до сукупної функції, і ми отримуємо результат. Тут, якщо наш запит має SUM (marks)
разом із GROUP BY (student_first_name)
ним, він покаже суму балів учнів, що належать до кожної групи (де всі члени групи матимуть однакове ім’я).
GROUP BY використовується для групування рядків у виділених місцях, як правило, при об'єднанні рядків (наприклад, обчислення підсумків, середніх значень тощо для набору рядків з однаковими значеннями для деяких полів).
ORDER BY використовується для впорядкування рядків, що випливають із оператора select.
Деякі хороші приклади є. Так само, як додати свій власний веб-лист, який дає хороші чіткі приклади, а також дозволяє виконувати свій власний SQL.
ORDER BY
показує поле у порядку зростання чи спадання. Хоча GROUP BY
показує однакові назви полів, ідентифікаторів тощо лише в одному висновку.
Слід зазначити, що GROUP BY
це не завжди необхідно, оскільки (принаймні, в PostgreSQL, і, ймовірно, в інших варіантах SQL) ви можете використовувати ORDER BY
зі списком, а ви все ще можете використовувати ASC
або DESC
за стовпцем ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;