我有這樣的任務。我相信我的猜測是正確的,但是我沒有找到任何證實我的假設頻率如何與計數函式一起作業的東西。
2012 年前 3 個月,DC 的自行車共享計劃中最受歡迎的自行車路線(起點/終點站組合)是什么?這條路線走了多少次?
?持續時間秒:騎行的持續時間(以秒為單位)
? 開始時間、結束時間:代表行程開始和結束的日期時間
? 起點站、終點站:行程的起點和終點站名稱
這是我寫的代碼,想看看我對最流行路線(我相信這是一個頻率)的猜測是否與 COUNT 組合正確。
SELECT start_station, end_station, count(start_station || end_station) AS "# route taken"
FROM tutorial.dc_bikeshare_q1_2012
WHERE start_time BETWEEN '2012-01-01' AND '2012-03-31'
GROUP BY start_station, end_station
ORDER BY count(start_station || end_station) DESC
如果有人可以確認我的猜測是否正確,我將不勝感激。
uj5u.com熱心網友回復:
如果每個站的起始站和結束站描述都相同,那么從描述和查詢看起來就可以了。但是,如果不查看表格資料,則很難確認。
uj5u.com熱心網友回復:
SELECT start_station, end_station, count(*) AS ct_route_taken
FROM tutorial.dc_bikeshare_q1_2012
GROUP BY start_station, end_station
ORDER BY ct_route_taken DESC
LIMIT 1;
只是count(*)。
表的名稱表明我們不需要WHERE子句。
如果這是誤導性的并且它涵蓋了更大的時間間隔,請添加一個(正確的!)WHERE子句,如下所示:
WHERE start_time >= '2012-01-01'
AND start_time < '2012-04-01'
您的查詢將消除大部分“2012-03-31”,因為start_time它應該是“日期時間”型別。根據確切的型別以及“前 3 個月”的日期應該位于的位置,我們可能還需要針對時區進行調整。
看:
- https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_BETWEEN_.28special_with_timestamps.29
- 在 Rails 和 PostgreSQL 中完全忽略時區
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349924.html
標籤:sql PostgreSQL
