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(*) AS PrescriptionCount14FROM 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 PrescriptionCount DESC
1with engine.connect() as conn:2    scripts = pd.read_sql("""3        SELECT s.PROCHI, s.hic_drugID4        FROM Project_12345..Prescribing_Scripts s5    """, conn)6 7    items = pd.read_sql("""8        SELECT hic_drugID, Approved_Name9        FROM Project_12345..Prescribing_Scripts_Prescribing_Item10    """, conn)11 12    demog = pd.read_sql("""13        SELECT PROCHI, Calculated_Age14        FROM Project_12345..Demography_Current15    """, conn)16 17# Merge the three tables18df = scripts.merge(items, on="hic_drugID").merge(demog, on="PROCHI")19 20# Create age bands in 10-year intervals21bins = [0, 20, 30, 40, 50, 60, 70, 80, 200]22labels = ["<20", "20-29", "30-39", "40-49", "50-59", "60-69", "70-79", "80+"]23df["AgeGroup"] = pd.cut(df["Calculated_Age"], bins=bins, labels=labels, right=False)24 25# Count prescription records per age group and drug26result = (df.groupby(["AgeGroup", "Approved_Name"])27            .size()28            .reset_index(name="PrescriptionCount")29            .sort_values("PrescriptionCount", ascending=False))30result
1# Load all three tables2scripts <- dbGetQuery(conn, "3    SELECT PROCHI, hic_drugID4    FROM Project_12345..Prescribing_Scripts5")6 7items <- dbGetQuery(conn, "8    SELECT hic_drugID, Approved_Name9    FROM Project_12345..Prescribing_Scripts_Prescribing_Item10")11 12demog <- dbGetQuery(conn, "13    SELECT PROCHI, Calculated_Age14    FROM Project_12345..Demography_Current15")16 17# Merge and create age bands18df <- merge(merge(scripts, items, by = "hic_drugID"), demog, by = "PROCHI")19 20df$AgeGroup <- cut(df$Calculated_Age,21                   breaks = c(0, 20, 30, 40, 50, 60, 70, 80, Inf),22                   labels = c("<20", "20-29", "30-39", "40-49",23                              "50-59", "60-69", "70-79", "80+"),24                   right = FALSE)25 26# Count prescription records27result <- aggregate(hic_drugID ~ AgeGroup + Approved_Name, data = df, FUN = length)28names(result)[3] <- "PrescriptionCount"29result <- result[order(-result$PrescriptionCount), ]30head(result, 20)