在我的表格中,我有乘坐不同网络的公共汽车 - 每条记录代表一次。
我的目标是找到每个网络中一天所乘的最大游乐设施数以及最大游乐设施数发生的日期 - 这需要先计算每个游乐设施每天的游乐设施数量网络,然后采取每个网络的最大数量 - 最后我将有三列 -
YMD
- max_count
- network_id
我尝试使用下面的查询,但我不确定在何处或如何包含max()
函数。有什么建议?
SELECT DISTINCT ON (network_id)
network_id, count(*), to_char(start_time, 'YYYY-MM-DD') as YMD
FROM routes
ORDER BY network_id, count DESC, YMD;
答案 0 :(得分:0)
我会使用汇总查询来计算每天的游乐设施数量,然后通过窗口rank
调用来查找游乐设施最多的日期:
SELECT network_id, cnt, ymd
FROM (SELECT network_id,
ymd,
cnt,
RANK() OVER (PARTITION BY network_id ORDER BY cnt DESC) AS rk
FROM (SELECT network_id,
TO_CHAR(start_time, 'YYYY-MM-DD') AS ymd,
COUNT(*) AS cnt
FROM routes
GROUP BY network_id, TO_CHAR(start_time, 'YYYY-MM-DD')
) t
) s
WHERE rk = 1