[英]How to group by month and year?
我有一個 PURCHASE 表,其日期列 PURCHASEDATE 是 DATE 格式。 我正在嘗試按月和年對購買進行分組。 為此,我嘗試:
SELECT
TO_CHAR(PURCHASEDATE, 'MM YYYY') AS MONTHYEAR
FROM PURCHASE
GROUP BY TO_CHAR(PURCHASEDATE, 'MM YYYY');
我也嘗試過GROUP BY EXTRACT(MONTH FROM PURCHASEDATE), EXTRACT(YEAR FROM PURCHASEDATE)
但都沒有奏效。
我對 SQL 查詢感到生疏:S。
編輯
表列
提前謝謝!
這是你想要的嗎?
SELECT
TO_CHAR(PURCHASEDATE, 'MM YYYY') AS MONTHYEAR,
SUM(TOTAL) AS TOTAL
FROM PURCHASE
GROUP BY
TO_CHAR(PURCHASEDATE, 'MM YYYY');
如果您有示例數據:
CREATE TABLE purchase ( purchasedate ) AS
SELECT DATE '2019-01-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 5 UNION ALL
SELECT DATE '2019-02-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 3 UNION ALL
SELECT DATE '2020-01-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 3 UNION ALL
SELECT DATE '2020-02-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 2 UNION ALL
SELECT DATE '2020-03-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 4 UNION ALL
SELECT DATE '2020-04-01' + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 1;
然后,您可以使用您的查詢:
SELECT TO_CHAR(PURCHASEDATE, 'MM YYYY') AS monthyear,
COUNT(*) AS frequency
FROM PURCHASE
GROUP BY
TO_CHAR(PURCHASEDATE, 'MM YYYY');
哪個輸出:
月 | 頻率:-------- | --------: 03 2020 | 4 01 2019 | 5 01 2020 | 2020 年 3 月 2 日 | 2 02 2019 | 2020 年 3 月 4 日 | 1
或者,您可以使用TRUNC
:
SELECT TRUNC(PURCHASEDATE,'MM') AS monthyear,
COUNT(*) AS frequency
FROM PURCHASE
GROUP BY
TRUNC(PURCHASEDATE,'MM');
哪個輸出:
月 | 頻率:------------------ | --------: 2020-03-01 00:00:00 | 4 2020-04-01 00:00:00 | 1 2020-02-01 00:00:00 | 2 2020-01-01 00:00:00 | 3 2019-01-01 00:00:00 | 5 2019-02-01 00:00:00 | 3
或者,您可以使用EXTRACT
:
SELECT EXTRACT( YEAR FROM PURCHASEDATE) AS year,
EXTRACT( MONTH FROM PURCHASEDATE) AS month,
COUNT(*) AS frequency
FROM PURCHASE
GROUP BY
EXTRACT( YEAR FROM PURCHASEDATE),
EXTRACT( MONTH FROM PURCHASEDATE);
哪個輸出:
年份 | 月 | 頻率 ---: | ----: | --------: 2019 | 1 | 5 2020 | 1 | 3 2020 | 2 | 2 2020 | 4 | 1 2019 | 2 | 3 2020 | 3 | 4
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.