質問 |
||
| 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を使わないといけないと思っていたのですが 違ったみたいですね おはずかしいです どうもありがとうございました |