Database
 sql >> база данни >  >> RDS >> Database

Как да групирате по две колони в SQL

Проблем:

Искате да групирате данните си по две колони, за да можете да преброите някои статистически данни.

Пример:

В order таблица, имате колоните order_date , product_id , customer_id и number . Искате да преброите броя продукти, закупени от всеки клиент всеки ден.

order таблицата изглежда така:

order_date product_id customer_id номер
25.11.2020 7 1 1
25.11.2020 12 1 3
26.11.2020 53 1 2
26.11.2020 1 2 4
26.11.2020 3 2 1
26.11.2020 16 2 7
26.11.2020 3 3 2
27.11.2020 6 3 1

Решение:

SELECT
  order_date,
  customer_id,
  SUM(number) AS products_number
FROM order

Резултатът е:

order_date customer_id номер_продукти
26.11.2020 3 2
27.11.2020 3 1
26.11.2020 2 12
25.11.2020 1 4
26.11.2020 1 2

Дискусия:

За да групирате по две колони, просто използвайте GROUP BY с две колони. Имената на колоните трябва да бъдат изброени след GROUP BY ключова дума и разделени със запетая. Групите ще бъдат създадени въз основа на стойностите на двете колони; за всяка двойка стойности се създава отделна група (напр. ('2020-11-25', 1) ). Вижте таблицата по-долу, където всяка група е представена в различен цвят:

order_date customer_id product_id номер
25.11.2020 1 7 1
25.11.2020 1 12 3
26.11.2020 1 53 2
26.11.2020 2 1 4
26.11.2020 2 3 1
26.11.2020 2 16 7
26.11.2020 3 3 2
27.11.2020 3 6 1

Ако едната или двете колони имат NULLs стойности, тези стойности се третират като отделна група (напр. ('2020-11-26', NULL) , (NULL, 5) или (NULL, NULL) ).

От друга страна, ако има NULLs в колона, върху която прилагаме агрегатна функция, NULLs стойностите просто се пропускат. (В този пример агрегатната функция е SUM() и колоната е number ). Ако имахме числовите стойности 2 , 1 и NULL за една от групите, SUM(number) би било равно на 3 (2 и 1 се добавят заедно и NULLs е пропуснато.)

По същия начин можете да групирате по произволен брой колони – просто напишете имената на колоните в GROUP BY клауза и ги отделяйте със запетаи.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на следата по подразбиране – част 3

  2. Съхранена процедура за получаване на информация за таблици на базата данни

  3. Настройка на производителността на целия план за заявка

  4. Как да замените част от низ в SQL

  5. Първи стъпки Настройка на производителността в Azure SQL база данни