アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします
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前の日付'

どう書いたらうまくいくのでしょうか?
よろしくお願いします。

A 回答 (1件)

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



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

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

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

といった感じになりましが、当初のやりたかったことと合致していますか?
    • good
    • 0
この回答へのお礼

ありがとうございます
出来ました

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

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

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

お礼日時:2007/04/12 21:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!