我有這個域名爲late_in
,其中包含像這樣的數據2017-05-29 08:36:44每天進入時間限制爲08:30:00。PostgreSQL每月計算一個月後多少次
我想要做的是獲得年份,月份和月份的晚些時候,即使它在本月晚些時候爲零。
我想要的結果是這個樣子:
year month late
-------------------
2017 1 6
2017 2 0
2017 3 14
,並一直持續到今年年底。
我有這個域名爲late_in
,其中包含像這樣的數據2017-05-29 08:36:44每天進入時間限制爲08:30:00。PostgreSQL每月計算一個月後多少次
我想要做的是獲得年份,月份和月份的晚些時候,即使它在本月晚些時候爲零。
我想要的結果是這個樣子:
year month late
-------------------
2017 1 6
2017 2 0
2017 3 14
,並一直持續到今年年底。
您正在尋找有條件聚集:
select extract(year from late_in) as year,
extract(month from late_in) as month,
count(*) filter (where late_in::time > time '08:30:00') as late
from the_table
group by extract(year from late_in),
extract(month from late_in);
這假定late_in
定義爲timestamp
。
表達late_in::time
只返回值的時間部分和用於聚合將導致只有那些行的filter()
子句進行計數,其中條件爲真,即,其中在部分時間是08:30之後
我認爲,你必須使用where而不是在過濾之後。並刪除選擇組後。 –
謝謝。效果很好。但是即使月底時間爲0,是否可以顯示一年中的整整一個月份? – Faiz
@Faiz:那將顯示一個零計數,除非該表中沒有該行的那一行。 –
什麼你的意思是'進入時間限制是每天08:30:00'。這如何影響理想的結果? –
我的意思是我的辦公室錄入時間是08:30:00,所以超過這個數將會算作 – Faiz