我有時間戳列:SQL(紅移):從時間戳列選擇每月不同的日期
time_column
2016-02-02 08:09:59.351000
2016-02-02 15:09:21.756000
2016-02-02 15:42:33.287000
2016-02-02 15:53:26.394000
我想編寫輸出給定月份不同時間戳的查詢。
因此,輸出將
jan feb mar apr may jun ....
9 1 10 ...
這是可能在SQL做,或者我需要(通過執行類似每個月計算不同date_trunc(...)
)運行每月分別查詢?
編輯:
基於建議看數據透視表,我試圖構建一個解決方案如下(但我相信有可能是紅移接受交叉的問題)。我希望真正的問題是我的查詢,而不是紅移。
SELECT * FROM crosstab(
$$SELECT
column1,
column2,
date_part('Month', my_timestamp) as month,
count(date_trunc('Month',my_timestamp))
FROM my_table
GROUP BY column1, column2, month$$,
$$SELECT m FROM generate_series(1,6) m$$
) AS (
column1 CHARACTER VARYING,
column2 CHARACTER VARYING,
"Jan" INT,
"Feb" INT,
"Mar" INT,
"Apr" INT,
"May" INT,
"Jun" INT
)
拋出錯誤:
[42883] ERROR: function crosstab("unknown", "unknown") does not exist Hint: No function matches the given name and argument types. You may need to add explicit type casts.
是的。它被稱爲轉軸表。在這裏搜索它,有成千上萬的例子。嘗試一下,然後,如果你不能做到這一點,告訴我們你的嘗試,所以我們會很樂意幫助你。 –
@JorgeCampos謝謝。術語有所幫助。 – curious
@JorgeCampos編輯添加。不知道問題是什麼。也許是一個紅移的特點? – curious