[英]Statistic sql query
我正在繪制一個統計圖表,因此我需要獲取圖表,該數據在x軸上有12個月,每個月有3個狀態部分,每個狀態部分都顯示其計數值。 我想到這樣的SQL:
SELECT status,count(*), created_date
FROM Profile
WHERE DATE_PART('MONTH', created_date ) = '6'
GROUP BY status
但是這個只是在一個月中獲得每個值的必要值,如果這樣做,我必須做12次才能獲得12個月的數據。 所以我想在一個查詢中獲得12個月的數據,所以有沒有人對此有解決方案?
這是我的數據表結構
create table Profile (
pro_id LONG not null primary key,
created_date DATE null,
status VARCHAR(75) null, // it just 3 status: applied, denied, processing
);
如@jarlh建議的那樣,MCVE會更有用,但是在兩行之間閱讀時,我認為您正在尋找類似的東西。 您需要按狀態和月份分組才能報告您12個月中的每個月。
SELECT status
,DATE_PART('MONTH', created_date )
,count(*) as month_count
FROM Profile
-- WHERE DATE_PART('MONTH', created_date ) = '6'
GROUP BY status
,DATE_PART('MONTH', created_date )
根據查詢的語法,此答案假定數據庫為Postgres。
好吧,您的查詢沒有考慮年份。 我懷疑您真的想要這樣的事情:
SELECT date_trunc('month', created_date) as yyyymm, status, count(*)
FROM Profile
WHERE created_date >= date_trunc('month', now())
GROUP BY yyyymm, status;
但是,您可能希望將其作為列:
SELECT date_trunc('month', created_date) as yyyymm,
COUNT(*) FILTER (WHERE status = :status1) as status_1,
COUNT(*) FILTER (WHERE status = :status2) as status_2,
COUNT(*) FILTER (WHERE status = :status3) as status_3
FROM Profile
WHERE created_date >= date_trunc('month', now())
GROUP BY yyyymm;
這可能更適合於繪圖目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.