1SELECT2    CASE3        WHEN d.Calculated_Age < 20                  THEN '<20'4        WHEN d.Calculated_Age BETWEEN 20 AND 29   THEN '20-29'5        WHEN d.Calculated_Age BETWEEN 30 AND 39   THEN '30-39'6        WHEN d.Calculated_Age BETWEEN 40 AND 49   THEN '40-49'7        WHEN d.Calculated_Age BETWEEN 50 AND 59   THEN '50-59'8        WHEN d.Calculated_Age BETWEEN 60 AND 69   THEN '60-69'9        WHEN d.Calculated_Age BETWEEN 70 AND 79   THEN '70-79'10        ELSE '80+'11    END AS AgeGroup,12    i.Approved_Name,13    COUNT(DISTINCT s.PROCHI) AS PatientCount14FROM Project_12345..Prescribing_Scripts s15INNER JOIN Project_12345..Prescribing_Scripts_Prescribing_Item i16    ON s.hic_drugID = i.hic_drugID17INNER JOIN Project_12345..Demography_Current d18    ON s.PROCHI = d.PROCHI19GROUP BY20    CASE21        WHEN d.Calculated_Age < 20                  THEN '<20'22        WHEN d.Calculated_Age BETWEEN 20 AND 29   THEN '20-29'23        WHEN d.Calculated_Age BETWEEN 30 AND 39   THEN '30-39'24        WHEN d.Calculated_Age BETWEEN 40 AND 49   THEN '40-49'25        WHEN d.Calculated_Age BETWEEN 50 AND 59   THEN '50-59'26        WHEN d.Calculated_Age BETWEEN 60 AND 69   THEN '60-69'27        WHEN d.Calculated_Age BETWEEN 70 AND 79   THEN '70-79'28        ELSE '80+'29    END,30    i.Approved_Name31ORDER BY PatientCount DESC
1# Reusing df from the previous example2result = (df.groupby(["AgeGroup", "Approved_Name"])["PROCHI"]3            .nunique()4            .reset_index(name="PatientCount")5            .sort_values("PatientCount", ascending=False))6result
1# Reusing df from the previous example2result <- aggregate(3    PROCHI ~ AgeGroup + Approved_Name,4    data = df,5    FUN = function(x) length(unique(x))6)7names(result)[3] <- "PatientCount"8result <- result[order(-result$PatientCount), ]9head(result, 20)