- 締切済み
SQLについての質問
SQLについて質問があります。 以下のようなデータがあったとします。 項目1 項目2 項目3 項目4 ---------------------------- 1 A 300 1 2 A 400 1 3 A 300 0 4 B 200 1 5 B 200 1 6 B 100 0 7 C 200 0 8 C 300 0 9 C 600 1 ここから「項目4 = 1」のレコードを「項目2」で集約し 「項目3」のサマリを求めると 項目2 項目3 -------------- A 700 B 400 C 600 となりここからさらに「項目3 >= 500」となる、 元のレコードを抽出したいのですが このような複雑な処理を1度のSQL可能なのでしょうか? ご存知の方がいらっしゃいましたら、よろしくお願いいたします。 ・期待する結果 項目1 項目2 項目3 項目4 ---------------------------- 1 A 300 1 2 A 400 1 9 C 600 1
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
select * from t1 where item2 in(select item2 from t1 where item4=1 group by item2 having sum(item3)>500) and item4=1 order by item1
- thimys
- ベストアンサー率20% (46/225)
select * from テーブル t1 ,(select 項目2 from テーブル where 項目4 = 1 group by 項目2 having sum(項目3)>= 500) t2 where t1.項目2 = t2.項目2 and t1.項目4=1 order by 1,2,3 適当に書いてみたけど こんな感じ?
お礼
無事解決いたしました。 ありがとうございました!
- nayuneko
- ベストアンサー率57% (28/49)
こんなんでいかがでしょう? --- select テーブル.* from (select 項目2, sum(項目3) as 項目3計 from テーブル where 項目4 = 1 group by 項目2 ) sum_table, テーブル where テーブル.項目2 = sum_table.項目2 and テーブル.項目4 = 1 and sum_table.項目3計 >= 500
お礼
回答ありがとうございます。 実際SQL文を見ると、なるほど!って感じ ですね!勉強になりました。
- jhayashi
- ベストアンサー率29% (535/1843)
having句使って 項目2 ------ A C を取り出して where 項目2 in(結果 A,Cが取り出せるSQL) and 項目4 = 1 でよろしいかと。
お礼
回答ありがとうございます。 結果A,Cが取り出せるところまでは できていたのですが、その後どうするかが 思いつきませんでした。参考にさせていただきます。
お礼
無事解決いたしました。 ありがとうございました!