Как получить последние Date & TotalEnrollments из списка с Дублированными значениями - PullRequest
1 голос
/ 07 марта 2020

enter image description here

У меня есть список школ. Есть дублированные DISTSCH, мне нужна строка, которая приносит мне последнюю неделю СО / И соответствующие итоговые суммы EQ.

select DATACOLLECTIONWEEK, districtname, DISTSCH,totalenrollmentsEQ from DB.SCHEMA.TEST where DistrictName like 'District1' and DISTSCH IN (select DISTSCH from DB.SCHEMA.TEST where DistrictName like 'District1' group by DISTSCH having count(*) > 1)

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

Вы можете использовать row_number(), чтобы получить самую последнюю запись для distsch, что определяется по столбцу заказа data_collection_week:

select *
from (
    select 
        t.*, 
        row_number() over(partition by distsch order by data_collection_week desc) rn
    from mytable t
) t
where rn = 1

Другое типичное решение - это фильтрация с коррелированным подзапросом:

select t.*
from mytable t
where t.data_collection_week = (
    select max(t1.data_collection_week) from mytable t1 where t1.distsch = t.distsch
)
1 голос
/ 07 марта 2020

Я думаю, это то, что вы просите:

SELECT MAX(DATACOLLECTIONWEEK)max_week
, districtname
, DISTSCH
,SUM(totalenrollmentsEQ)total
FROM DB.SCHEMA.TEST
WHERE DistrictName LIKE 'District1'
AND DISTSCH IN (SELECT DISTSCH
                FROM DB.SCHEMA.TEST
                WHERE DistrictName LIKE 'District1'
                GROUP BY DISTSCH
                HAVING COUNT(*) > 1)
GROUP BY districtname
, DISTSCH
...