SQLの質問です。

主キーはinteger, 項目1・2はbooleanという以下のようなテーブルがあったとします。

○テーブルA
主キー | 項目1 | 項目2
--------------------------
10000 | true | false
10001 | true | false
10002 | false | true

1回のSQLで次のような集計をすることは可能でしょうか?
  →SQL
    select sum(項目1), sum(項目2)
    from テーブルA

  →結果
    sum(項目1) | sum(項目2)
    -------------------------
    2     | 1


論理値を集計することになりますから、このままだとエラーになります。環境はPostgreSQL8.1.xを想定しています。
 ※他の環境では動くかもしれませんが、
  今回は考慮しない方向でお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/01/29 16:18:08
  • 終了:2007/02/01 15:23:22

ベストアンサー

id:samejima No.1

samejima回答回数92ベストアンサー獲得回数82007/01/29 16:43:00

ポイント65pt

http://www.postgresql.jp/document/pg815doc/html/functions-condit...

9.13.1. CASE

select
    sum(case when 項目1 then 1 else 0 end),
    sum(case when 項目2 then 1 else 0 end)
from テーブルA
id:katsube

なるほど、CASE文ですか。

思いつかなかったです(^^;

パフォーマンス的にはどうなんでしょう?

2007/01/29 16:46:23

その他の回答(1件)

id:samejima No.1

samejima回答回数92ベストアンサー獲得回数82007/01/29 16:43:00ここでベストアンサー

ポイント65pt

http://www.postgresql.jp/document/pg815doc/html/functions-condit...

9.13.1. CASE

select
    sum(case when 項目1 then 1 else 0 end),
    sum(case when 項目2 then 1 else 0 end)
from テーブルA
id:katsube

なるほど、CASE文ですか。

思いつかなかったです(^^;

パフォーマンス的にはどうなんでしょう?

2007/01/29 16:46:23
id:matsOS No.2

matsOS回答回数34ベストアンサー獲得回数22007/01/29 18:05:00

ポイント5pt

単純にレコードを数えるなら。

select count(*)from テーブルA where 項目1 IS TRUE;

id:katsube

設問の意図と異なります。

2007/01/30 08:49:28

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません