sql >> Database >  >> RDS >> Sqlserver

Vensterfuncties om afzonderlijke records te tellen

Ik kwam deze vraag tegen op zoek naar een oplossing voor mijn probleem van het tellen van verschillende waarden. Bij het zoeken naar een antwoord kwam ik deze post tegen . Zie laatste opmerking. Ik heb het getest en de SQL gebruikt. Het werkt echt goed voor mij en ik dacht dat ik hier een andere oplossing zou bieden.

Samengevat, met behulp van DENSE_RANK() , met PARTITION BY de gegroepeerde kolommen, en ORDER BY beide ASC en DESC op de kolommen om te tellen:

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

Ik gebruik dit als sjabloon voor mezelf.

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

Ik hoop dat dit helpt!



  1. PostgreSQL - Converteer string naar ASCII integer

  2. MySQL ALTER TABLE loopt vast

  3. Verander van SQLite naar PostgreSQL in een nieuw Rails-project

  4. SQL Server-prestaties TOP CPU-query -2