• 締切済み

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

みんなの回答

回答No.4

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

kenntoto
質問者

お礼

無事解決いたしました。 ありがとうございました!

  • thimys
  • ベストアンサー率20% (46/225)
回答No.3

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 適当に書いてみたけど こんな感じ?

kenntoto
質問者

お礼

無事解決いたしました。 ありがとうございました!

  • nayuneko
  • ベストアンサー率57% (28/49)
回答No.2

こんなんでいかがでしょう? --- 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

kenntoto
質問者

お礼

回答ありがとうございます。 実際SQL文を見ると、なるほど!って感じ ですね!勉強になりました。

  • jhayashi
  • ベストアンサー率29% (535/1843)
回答No.1

having句使って 項目2  ------   A    C  を取り出して where 項目2 in(結果 A,Cが取り出せるSQL) and 項目4 = 1 でよろしいかと。

kenntoto
質問者

お礼

回答ありがとうございます。 結果A,Cが取り出せるところまでは できていたのですが、その後どうするかが 思いつきませんでした。参考にさせていただきます。

関連するQ&A