2013-06-19 12 views
8

Hy。グループ化by Postgresql日付時刻

CODE  DATE  COUNT 
"3443" "2009-04" 3 
"3441" "2009-04" 13 
"3442" "2009-04" 11 
"3445" "2009-04" 72 

I:

CODE  DATE  COUNT 
"3443" "2009-04-02" 3 
"3444" "2009-04-06" 1 
"3443" "2009-04-06" 1 
"3443" "2009-04-07" 7 

のように私のPostgreSQLデータベースの何かの従業員レコードは、私は、クエリを使用して、 "すべてのコードを選択して、月に発生したことをTHEMをCOUNT"

RESULTしたいがありますクエリを使用しました。つまり、

SELECT CODE,date_part('month',DATE),count(CODE) 
FROM employee 
where 
group by CODE,DATE 

上記のクエリは正常に実行されますが、レコードは数字の形をしており、月がその年に属することを見つけるのは難しいです。要するに、上記の結果をRESULTセクションで得たいと思います。おかげ

答えて

17

これを試してみてください:

SELECT CODE, to_char(DATE, 'YYYY-MM'), count(CODE) 
FROM employee 
where 
group by CODE, to_char(DATE, 'YYYY-MM') 
1

は、あなたがテキストや日付などの結果をしたいかに応じて

SELECT CODE,count(CODE), 
    DATE as date_normal, 
    date_part('year', DATE) as year, 
    date_part('month', DATE) as month, 
    to_timestamp(
     date_part('year', DATE)::text 
     || date_part('month', DATE)::text, 'YYYYMM') 
     as date_month 
FROM employee 
where 
group by CODE,DATE; 
12

のいずれかを試してみてください、あなたはまた、このようにそれを書き込むことができます。

SELECT CODE, date_trunc('month', DATE), COUNT(*) 
    FROM employee 
    GROUP BY CODE, date_trunc('month', DATE); 

あなたの例でこれを返すものはどれですか、DATEはまだタイムスタンプですが、これ以上実行する場合には便利です無変換ので上の計算が必要である:

CODE  DATE  COUNT 
"3443" "2009-04-01" 3 
"3441" "2009-04-01" 13 
"3442" "2009-04-01" 11 
"3445" "2009-04-01" 72 

date_trunc()はまた、例えばquarterために、他の値を受け入れ、year 等すべての値のdocumentationを見る