• ベストアンサー

件数を取得する方法

グループ化した結果のレコード数を取得する方法はないでしょうか? No,Name,Price 1, A, 100 2, A, 200 3, B, 150 4, A, 100 5, B, 150 このようなデータがあるとき、 Nameでグループ化、Priceの合計金額を取得すると A,400 B,300 と取得できるのですが、結果が2件あることを取得する方法がわかりません。できないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#86752
noname#86752
回答No.2

SQL Serverのバージョンにもよりますが、以下のようなSQLができるはずです。 テーブルをAとします。 select count(*) from (select count(*) from A group by Name) as AA これはselect count(*) from A group by Nameで取得される内容を仮想的なテーブルAAとして、それをさらにcount(*)しています。 試せる環境がないのですが、1年ほど前に調べたときにSQL Server、Oracle、PostgreSQLで上記のようなSQLが実行できたと思います。 right/left joinなどを使った複雑なSQLは全て上記方法のSQLで置き換えることができ、とてもわかりやすくなります。

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

select Name, count(*), sum(Price) from odr.テーブルm group by Name order by Name countでレコード数を取得できるはずです。

mm_mm
質問者

補足

上記のSQLだと、count(*) の値は Aの行に3、Bの行に2と入るだけではないでしょうか? 上記のSQL文でもいいのですが、SQL文の実行結果が何レコード取得できるのか知りたいのです。 上記の場合だと”2”を取得したいです。 無理でしょうか