sql >> Database teknologi >  >> RDS >> Sqlserver

Vinduesfunktioner til at tælle forskellige poster

Jeg stødte på dette spørgsmål i søgen efter en løsning på mit problem med at tælle forskellige værdier. Da jeg søgte efter et svar stødte jeg på dette indlæg . Se sidste kommentar. Jeg har testet det og brugt SQL. Det fungerer rigtig godt for mig, og jeg regnede med, at jeg ville give en anden løsning her.

Sammenfattende ved hjælp af DENSE_RANK() , med PARTITION BY de grupperede kolonner og ORDER BY både ASC og DESC på kolonnerne for at tælle:

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

Jeg bruger dette som en skabelon for mig selv.

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

Jeg håber, at dette hjælper!



  1. Anførselstegn forkert ved brug af crosstab() i PostgreSQL

  2. Opdater SQL med fortløbende nummerering

  3. Bedste måde at lave multi-row insert i Oracle?

  4. Tidsstempel som int-felt, forespørgselsydeevne