Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcje okna do zliczania różnych rekordów

Natknąłem się na to pytanie w poszukiwaniu rozwiązania mojego problemu liczenia odrębnych wartości. Szukając odpowiedzi, natknąłem się na ten post . Zobacz ostatni komentarz. Przetestowałem to i użyłem SQL. U mnie działa to naprawdę dobrze i pomyślałem, że przedstawię tutaj inne rozwiązanie.

Podsumowując, użyj DENSE_RANK() , z PARTITION BY zgrupowane kolumny i ORDER BY oba ASC i DESC na kolumnach do policzenia:

DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies

Używam tego jako szablonu dla siebie.

DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount

Mam nadzieję, że to pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pięć najważniejszych kwestii dotyczących projektowania indeksu bazy danych w programie SQL Server

  2. PHP IIS7 MSSQL Wywołanie niezdefiniowanej funkcji sqlsrv_connect

  3. Dlaczego SQL Server 2008 porządkuje, gdy używa się funkcji GROUP BY i nie określono kolejności?

  4. sql wybierz pole na 2 kolumny

  5. Zadeklaruj zmienną wielowartościową w SQL