sql >> Databasteknik >  >> RDS >> Sqlserver

Fönsterfunktioner för att räkna distinkta poster

Jag stötte på den här frågan i jakten på en lösning på mitt problem med att räkna distinkta värden. När jag letade efter ett svar stötte jag på detta inlägg . Se sista kommentaren. Jag har testat det och använt SQL. Det fungerar riktigt bra för mig och jag tänkte att jag skulle tillhandahålla en annan lösning här.

Sammanfattningsvis, med DENSE_RANK() , med PARTITION BY de grupperade kolumnerna och ORDER BY båda ASC och DESC på kolumnerna för att räkna:

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

Jag använder detta som en mall för mig själv.

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

Jag hoppas att detta hjälper!



  1. MySQL SecureString som anslutningssträng

  2. Fel vid uppdatering av databas efter distribution till server. Laravel 5

  3. Skillnad mellan DECIMAL och NUMERIC datatyp i PSQL

  4. Optimera gruppvis maximal fråga