• ベストアンサー

件数を取得する方法

グループ化した結果のレコード数を取得する方法はないでしょうか? 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件あることを取得する方法がわかりません。できないでしょうか?

  • mm_mm
  • お礼率16% (4/24)

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

  • ベストアンサー
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”を取得したいです。 無理でしょうか

関連するQ&A

  • フィルタ後のフォームの件数の取得の仕方

    あくせすです。 テーブルを元にフォームにデータを表示させているのですが 元データのテーブルのレコード数が100件だとして 今フォーム上で手作業でフィルタをかけて表示しているレコード数が20件だとしたら、 この20件と言う数をVBAで取得する方法を教えてください。 DCountだと、元テーブルの全てのレコード数(フィルタ前)が取得されてしまいます。

  • データの取得方法

    Aテーブル{ id char(3) not null, name varchar(10), a_no char(5), b_no char(5), c_no char(5), date timestamp } Bマスタ{ no char(5), name char(10) } 上記のようなDBがあるのですがAテーブルのa_no、b_no、c_noに入るのはBマスタのnoになります。 下記のようにデータを取得したい場合、どうすればうまく取得できるのでしょうか。 A.id, A.name, A.a_no, カラム名をname1としてB.name, b_no, カラム名をname2としてB.name, c_no, カラム名をname3としてB.name そんなに難しいことではないと思うのですが、考えれば考えるだけ頭の中でこんがらがってきて困っています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • オブジェクト数の取得

    以下のようなテキストボックスがあります。 <input type="text" name="price1[0]"> <input type="text" name="price2[0]"> <input type="text" name="price3[0]"> <input type="text" name="price1[1]"> <input type="text" name="price2[1]"> <input type="text" name="price3[1]"> ・・・・ 添え字は[0]、[1]、[2]・・・となり、 データにより可変となっています。 入力するのは金額なので、数値かどうかのチェックを行いたいのですが、テキストフィールドの個数をどのように取得したらよいかがわかりません。 他のオブジェクトとのからみで、name="price1[]"のように変更することはできません。 (このようにすると、オブジェクト数は取得できるのですが) 上記記述のオブジェクト数の取得方法がわかる方、教えてください。テキストは金額のみなので、テキストフィールド全ての個数でもよいですし、price1[]、price2[]、price3[]各々の個数でもどちらでもよいです。 よろしくお願いいたします。

  • SQL GROUPで件数の一番多いレコードのみ取る

    SQL GROUPで件数の一番多いレコードのみ取る ORACLE10です。 次のようなテーブルがあります。 USER -----------テーブル名 ID,NAME,DATA----列名 1,A,any 1,A,any 1,B,any 2,C,any 3,D,any このテーブルから、IDをGROUPにして、さらに、一番使用頻度の多いNAMEを取得したいのです。 表示したいのは、IDとNAMEです。 つまり、取得結果例は次のようになります。 取得結果例 ID,NAME----列名 1,A 2,C 3,D SQL文をどのように作れば可能でしょうか? ちなみに、IDやNAMEのマスタテーブルはありません。 自分では、「(select ID, NAME, count(*) from USER group by ID, NAME) COUNT」で、COUNTを内部テーブルにして、グループ内で一番多いcount(*)をmaxで取得してみようかと思ったんですが、そこからアイデアが出ませんでした。

  • ある条件でのSQLの取得方法について

    以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー   項目1 10     X 20     Y ・テーブルB キー  項目2  項目3 10     5    C 10     6    D 12     6    E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は  別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、  複数件あるかも知れません。  無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと  同じレコードに、項目2が同じデータの情報を出力します。  項目2が同じデータが無い場合はこの情報は出力しません。  項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー  フラグ   項目1  項目2  項目3   項目2が同じキー  項目2が同じ値 10  テーブルA   X 10  テーブルB         5    C 10  テーブルB         6    D        12            E 20  テーブルA   Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?

  • 指定した件数を取得

    よろしくお願いします MySQL5を使用しています 現在、レコードに7件入っていて PHPから取り出すときに 10件取り出したいです。 重複していいので7件しかないデータを重複ありで10件をランダムで取得 というのはSQL文で可能なのでしょうか? それともPHPから制御するしかないのでしょうか? 以上よろしくお願いします

    • ベストアンサー
    • MySQL
  • 二つの表の項目を比較して値を取得するSQL

    お世話になります、 二つの表の項目を比較して値を取得するSQLを作成しているのですが、うまくいきません。 具体的には Aテーブル NAME | PRICE ------|------ リンゴ | 100 ------|------ オレンジ | 200 ------|------ ブドウ | 300 ------|------ Bテーブル NAME | PRICE ------|------ リンゴ | 1000 ------|------ オレンジ | 200 ------|------ ブドウ | 1300 ------|------ という二つのテーブルA、Bがあったとします。 このA,Bの二つのテーブルのそれぞれの果物のPRAICEを比較してBのPRICEがアップしている果物を出力するという SQLを教えてください。 <ほしい結果> NAME | PRICE ------|------ リンゴ | 1000 ------|------ ブドウ | 1300 よろしくお願いします。

  • 2つのテーブルのデータまとめて取得したい

    SQL Server2008を使用しているのですが、どうのようにデータを取得すれば良いか わからず困っております。 例えば、 名前は違うが全く同じテーブルが2つあるとします。 テーブルAには6レコード、テーブルBには3レコードのデータが存在するとします。 この時、単純に6レコード+3レコードの 9レコード分をひとつのテーブルとしてデータを 取得するにはどのようなSQL文を書けばよいでしょうか? SELECT * FROM テーブルA, テーブルBでは18レコードもデータを取得してしまい、且つ フィールド数も増加してしまいます。 宜しくお願いいたします。

  • アクセスのカウント(件数)について。

    アクセスでAフィールドとBフィールドがあり、AフィールドとBフィールドの両方に入力があるレコードと、AフィールドとBフィールドのどちらかに入力があるレコードの合計レコード数を求めたいのですが、どのようにしたらよいのでしょうか?(つまりAフィールドとBフィールドの両方に入力がないレコード以外をカウントしたいのです。)よろしくお願いいたします。

  • 複数のformから値を取得する方法

    AというASPには複数のformがあります。 DBの取得結果を表示しており、countには取得件数が入ってます。 また、件数分同じformがあり、判別はnameにて行っています。 検索件数<%=count %>件 <input type="button" value="一括修正" action="Update()"> <% Do Until rs.EOF %> <form method="POST" target="main" name="updatename<%=ii%>"> <input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>" … </form> … <% ii= ii+1 rs.MoveNext Loop%> 受け取り側のBというASPでは <form method="POST" name="update"> <%For i = 1 To count%> <input type="hidden" name="no<%=i%>" value="<%=Server.HTMLEncode(Request.Form("No" & i)) %>"> <%Next%> </form> のようにループにて送信側のデータを取得しています。 このAとBの間をjavascript(外部ファイル)にてやろうと思っています。 Javascript(データ受け渡し) function Update() { var Cnt for (Cnt=1; Cnt<count ; Cnt++){ // 件数分ループ var No(Cnt) = document.all.updatename(Cnt).no.value; document.update.no(Cnt).value=No(Cnt); } document.update.action = "B.asp"; document.update.target = "main"; document.update.submit(); } やりたい事は、Aというファイルにある複数のformから値を取得し、Bというファイルにある項目に設定する、という事なのですが、上手くいきません。 ・Aというページの件数をjavascriptで使用する方法 ・Aというページの複数formから値を取得する方法 document.allを使用すると上手くいく、とネットで検索してわかったのですが、いまいち使用方法がわからず、こまっています・・・。 どうか宜しくお願いします。