我有一個問題,RANK () OVER函式是否可以給出“最受歡迎”的值?
題:
在平均行程時間至少為 8 分鐘(不包括超過 2 小時的行程)的路線中,哪條路線最受歡迎?
我的查詢:
SELECT
start_station,
end_station,
count(*),
RANK() OVER (Order BY COUNT(*) DESC) as ranking,
AVG(duration_seconds)
FROM tutorial.dc_bikeshare_q1_2012
WHERE duration_seconds BETWEEN 480 and 7200
GROUP BY start_station, end_station
有人可以確認是否RANK() OVER滿足這個“人氣”值?
uj5u.com熱心網友回復:
rank應該可以; 不過,我對這個問題的理解與您略有不同:首先將所有行程限制為少于 2 小時的行程,然后計算您需要的其余資料。像這樣的東西:
select start_station,
end_station,
rank() over (order by cnt desc) rnk
from
(select start_station,
end_station,
avg(duration_seconds) avg_duration,
count(*) cnt
from tutorial.dc_bikeshare_q1_2012
where duration_seconds < 7200
group by start_station, end_station
) as x
where avg_duration >= 480;
uj5u.com熱心網友回復:
問題要求一條最受歡迎的路線。rank()將是浪費時間。ORDER BY LIMIT 1應該更便宜:
SELECT start_station, end_station, count(*) AS ct
FROM tutorial.dc_bikeshare_q1_2012
WHERE duration_seconds <= 7200
GROUP BY start_station, end_station
HAVING avg(duration_seconds) >= 480
ORDER BY ct DESC -- add more expressions to break ties
LIMIT 1;
您不是唯一一個致力于此的人:
- 計陣列合 頻率
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351394.html
標籤:sql PostgreSQL
上一篇:Illuminate\Database\QueryException帶有訊息“SQLSTATE[42P01]:未定義表:7錯誤:關系“聯系人”不存在
下一篇:groupby的SQL回傳最大值
