這是我的表,首先我想status_exec每個MAX (date_sta)之後,我想通過分組status_exec並獲得COUNT。
id_out_sta | status_exec | date_sta |
---|---|---|
1 | 2 | 2021-11-07 |
1 | 1 | 2021-11-28 |
1 | 5 | 2021-12-07 |
2 | 7 | 2021-04-02 |
2 | 2 | 2021-05-12 |
2 | 6 | 2021-08-07 |
3 | 2 | 2021-08-05 |
3 | 5 | 2021-08-28 |
4 | 2 | 2021-03-15 |
4 | 5 | 2021-04-25 |
我期望的結果應該如下:
status_exec | 數數 |
---|---|
5 | 3 |
6 | 1 |
這是我的查詢,但沒有幫助:
SELECT id_out_sta, status_exec , max(date_sta) as max_date_sta
FROM public.status_exe
join public.order_out on status_exe.id_out_sta = order_out.id_out
group by (id_out_sta);
請提出任何建議、查詢構建器或簡單查詢。
一個常見的解決方案是row_number
窗口函數來找到每個組的最大值。在 CTE 中使用它,然後聚合結果:
with s as (
select *,
Row_Number() over(partition by id_out_sta order by max_date_sta desc) rn
from t
)
select status_exec, Count(*) "Count"
from s
where rn=1
group by status_exec
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句