Відповіді:
ЗАМОВИТИ ЗА зміною порядку повернення предметів.
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;