Database
 sql >> Baza danych >  >> RDS >> Database

Jak grupować według dwóch kolumn w SQL

Problem:

Chcesz pogrupować swoje dane według dwóch kolumn, aby móc policzyć trochę statystyk.

Przykład:

W order tabela, masz kolumny order_date , product_id , customer_id i number . Chciałbyś policzyć liczbę produktów kupionych przez każdego klienta każdego dnia.

order tabela wygląda tak:

data_zamówienia product_id identyfikator_klienta liczba
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

Rozwiązanie:

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

Wynik:

data_zamówienia identyfikator_klienta products_number
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

Dyskusja:

Aby pogrupować według dwóch kolumn, po prostu użyj GROUP BY z dwiema kolumnami. Nazwy kolumn powinny być wymienione po GROUP BY słowa kluczowego i oddzielone przecinkiem. Grupy zostaną utworzone na podstawie wartości obu kolumn; dla każdej pary wartości tworzona jest osobna grupa (np. ('2020-11-25', 1) ). Spójrz na poniższą tabelę, gdzie każda grupa jest przedstawiona w innym kolorze:

data_zamówienia identyfikator_klienta product_id liczba
2020-11-25 1 7 1
25.11.2020 1 12 3
26-11-2020 1 53 2
2020-11-26 2 1 4
2020-11-26 2 3 1
2020-11-26 2 16 7
2020-11-26 3 3 2
2020-11-27 3 6 1

Jeśli jedna lub obie kolumny mają NULLs wartości, te wartości są traktowane jako osobna grupa (np. ('2020-11-26', NULL) , (NULL, 5) lub (NULL, NULL) ).

Z drugiej strony, jeśli istnieją NULLs w kolumnie, na której stosujemy funkcję agregującą, NULLs wartości są po prostu pomijane. (W tym przykładzie funkcją agregującą jest SUM() a kolumna to number ). Gdybyśmy mieli wartości liczbowe 2 , 1 i NULL dla jednej z grup SUM(number) równałoby się 3 (2 i 1 są dodawane razem, a NULLs jest pominięty).

Podobnie możesz pogrupować według dowolnej liczby kolumn – po prostu wpisz nazwy kolumn w GROUP BY klauzuli i oddziel je przecinkami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać klauzuli ORDER BY w SQL?

  2. Jak sztuczna inteligencja zmieni tworzenie i testowanie oprogramowania

  3. Ogłaszamy ogólną dostępność SQL Compliance Manager 5.9

  4. Używanie isql z parametrami połączenia

  5. Jak uzyskać miesiąc z daty w T-SQL?