9

ハイ。私のpostgresqlデータベースには、次のような従業員レコードがあります

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

「すべてのコードを選択し、その月に発生したものを数えます」というクエリを使用したい

結果:

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

私はクエリを使用しました

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

上記のクエリは正常に実行されますが、レコードにリストされている月は数字の形式であり、月がどの年に属しているかを見つけるのは困難です。つまり、上記の RESULT セクションで述べたように、結果を取得したいと考えています。ありがとう

4

3 に答える 3

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を参照してください。

于 2013-06-19T09:23:18.367 に答える
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;
于 2013-06-19T06:32:14.477 に答える