ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.2915606 BROUP BY で集計し、日付で削除
質問者:SAY_MAN よろしくお願いします
PostgreSQL 8.0.8です

現在
code date
1    2007-04-02 12:52:22.239818+09
1    2007-03-02 12:52:50.90313+09
2    2007-04-02 13:08:35.093001+09
2    2007-04-02 13:11:08.532232+09
というデータがあるとし
これをcodeでグループ化して、codeが何件あるかを調べたいです
ただし、dateが本日から30日以上前の場合は省くという条件をつけたいのですがエラーがでてうまくいきません
SELECT code,COUNT(code) AS cnt FROM test GROUP BY code HAVING date(date) >= '30前の日付'

どう書いたらうまくいくのでしょうか?
よろしくお願いします。
困り度:
  • 困っています
質問投稿日時:
07/04/12 17:48
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1 >エラーがでてうまくいきません

どういうエラーなのか、具体的にメッセージの内容を書きましょう。

havingで集合関数(集計関数)以外を指定する場合は、その列がgroup byで指定されていなければなりません。
havingでなく、whereで指定することを考えてみてください。

SELECT code,COUNT(code) AS cnt FROM test
WHERE date(date) >= '30前の日付'
GROUP BY code

といった感じになりましが、当初のやりたかったことと合致していますか?
回答者:chukenkenkou
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/04/12 20:16
この回答へのお礼ありがとうございます
出来ました

>どういうエラーなのか、具体的にメッセージの内容を書きましょう。
すいません、まさに「dateをgroup byで指定されていなければなりません。」
的なエラーでした。

GROUP BYを使う場合はHAVINGを使わないといけないと思っていたのですが
違ったみたいですね
おはずかしいです

どうもありがとうございました