dポイントプレゼントキャンペーン実施中!

PLSQLで質問です。
GROUP BYで集合値にしたSQL文である条件のものだけの人数だけしりたい
のですが、うまくできません。ご教授おねがいします。
例)
会社  氏名     金額1     金額2
A    ○○     1000    0
A    △△      200    300
A    ××     1300    400
A    ■■      400    300

というテーブルがあって、会社別の合計金額と人数をしりたいのですが、
上でいうと、金額2が0以外の人の人数をしりたいのです。

結果的には

会社   人数   合計金額    金額2がゼロ以外の人数
A     3    2500     2
B     1    400      1
になってほしいです。

会社でGROUP BYして 社員をCOUNTで人数だして、 SUMで合計金額
はだせるまではいいのですが、金額2の人数をだすやり方がわかりません。
条件がつけれるcount関数があればいいのですが。。。

よろしくお願い致します。

A 回答 (2件)

select句で入れ子のsqlを使用すればできると思います。



select t1.cmp,count(t1.*),sum(t1.money1),select count(t2.*) from t2 where t1.cmp = t2.cmp and money2 <> 0 group by cmp)
from t1 group by t1.cmp

こんな感じに。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
入れ子もやってみたのですが、うまくいきませんでした。
こんな感じで書くのですね。
やってみたらできました。
ありがとうございました。

お礼日時:2006/07/11 09:46

PL/SQLということは、Oracleでしょうか?


それでしたら、DECODE関数が使えると思います。

SUM(DECODE(金額2, 0, 0, 1))
でどうでしょうか。

もしくは、Oracleのバージョンによって使えるか不確かですが、CASE文が使えたと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
いろいろやってみて、このやり方で対応しました。
ありがとうございました。

お礼日時:2006/07/11 09:55

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