使用相应的名称获取每天的最大值



我有下表:

val<1>120<1><11>
名称
2021年1月12日 Een
2021年1月11日 Twee
2021年1月12日 Drie
2021年1月12日 推特
2021年1月11日 Drie 19
2021年1月11日 Een

使用distinct on:

select distinct on (day) t.*
from t
order by day, val desc;

您还可以使用WINDOW函数,以避免DISTINCT ON,并在其他品牌的数据库上进行操作。row_number((和ORDER BY将起作用:

WITH i AS (
SELECT  
name
, val
, day
, row_number() OVER(PARTITION BY name ORDER BY val DESC, day)
FROM    table t
)
SELECT  name
,   val
,   day
FROM    i
WHERE   row_number = 1; -- one result for every name, the first one

您可以尝试下面的sql。

WITH max_val AS (
SELECT MAX(val) AS max_val
,day 
FROM TABLE t
GROUP BY day
)
SELECT  max_val.max_val
,t.name
,t.day
FROM TABLE t
INNER JOIN max_val
ON t.day = max_val.day
;

最新更新