Narazil jsem na tuto otázku při hledání řešení mého problému počítání různých hodnot. Při hledání odpovědi jsem narazil na tento příspěvek . Viz poslední komentář. Testoval jsem to a použil SQL. Funguje to pro mě opravdu dobře a napadlo mě, že zde poskytnu jiné řešení.
Stručně řečeno, pomocí DENSE_RANK() , s PARTITION BY seskupené sloupce a ORDER BY oba ASC a DESC na sloupcích, které se mají počítat:
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies
Používám to jako šablonu pro sebe.
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount
Doufám, že to pomůže!