• ベストアンサー

SQLのCOUNT件数表示について

select A,B from tableC group by A, B として、最後の1行に合計を出すSQLを作りたいのですが、 可能でしょうか?

  • Oracle
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.1

Oracleの環境がないので、テストしていませんが、以下のSQLを試してみてください。 (1)グループ毎の最後に件数&一番最後に総件数を得る select A,B,count(*) as cnt from tableC group by rollup(A, B) (2)一番最後に総件数を得る select * from( select A,B,count(*) as cnt from tableC group by rollup(A, B)) as x where not(A is not null and B is null)

その他の回答 (1)

  • trictrac
  • ベストアンサー率38% (10/26)
回答No.2

集約項目毎の件数と、総合計を取りたいのであれば、 単純にとって来れば良いと思うのですが・・・。 select A, B, count(*) from tableC group by A, B union select '', '', count(*) from tableC

関連するQ&A

  • SQLでのCOUNT関数の使い方

    表A           表B 商品ID 数量 価格    商品ID 商品名  ------ ---- ----    ------ ------ 0001   10 1000    0001  万年筆 0002   50 200     0002  ボールペン 0003   25 600     0003  シャーペン 0004   150 2000    0004  文房具セット 0005   20 420     0005  ノート SELECT 数量,価格,商品名,商品ID FROM 表A,表B WHERE 表A.商品ID = 表B.商品ID とやると恐らくこんなような表ができると思います。 商品ID 数量 価格 商品名  ------ ---- ---- ------ 0001  10   1000 万年筆 0002  50   200 ボールペン 0003  25   600 シャーペン 0004  150  2000 文房具セット 0005  20   420 ノート ここで、表の行数を6で割ったときの余りの数を表に追加して全体の行数を6の倍数にしたいと思っています。 (ID 0006として空行を追加) しかし、この表の行数を取得するためにCOUNT関数を使うと思うのですが、使い方が分かりません。 COUNT関数を使うにはGROUP BY句とHAVING句を扱うらしいのですがSELECT句にある列名全部をGROUP BY句に入れないといけないらしく思ったとおりのことが出来ません。 上記のSQLとCOUNT関数を1つのSQLで表の作成と行の行数を得たいと思っています。(ここでは、5行なので5という値を取得したい。) また、最後にどうやって空行を追加すれば良いかも分かりません。 具体的なSQLのソースなど、どなたか分かりましたら、教えてください。

  • データの件数を集計するための SQL

    データの件数を集計するための SQL について教えてください。 例えば以下のようなテーブルがあります。 ▼テーブル 名前 |交通手段|日付 -----+--------+---- Aさん|バス |5/1 Aさん|バス |5/2 Aさん|バス |5/3 Bさん|バス |5/1 Bさん|電車 |5/2 ※「日付」については、本質問に直接の関係はありません。 このテーブルにクエリを発行して、以下の結果を取得したいと考えています。 ▼取得したい結果 名前 |交通手段|回数 -----+--------+---- Aさん|バス |3 Bさん|バス |1 Bさん|電車 |1 当方がイメージしている流れは以下の通りです。 SQL は苦手でして、これをひとつにまとめることができません。 1) GROUP BY で束ねる SELECT 名前, 交通手段 FROM テーブル GROUP BY 名前, 交通手段 2) 1)の結果の1件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Aさん' AND 交通手段='バス' 3) 1)の結果の2件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Bさん' AND 交通手段='バス' 4) 1)の結果の3件目をSELECTする SELECT COUNT(*) FROM テーブル WHERE 名前='Bさん' AND 交通手段='電車' なおレンタルサーバ上 (MySQL 5.0.77) で稼働させるため、 なるべく高速な SQL を希望いたします。

    • ベストアンサー
    • MySQL
  • SQLのcount()とgroup by

    以下のようなテーブルがあったとき、 tbl1 id | score 1 | 100 1 | 200 1 | 300 2 | 200 2 | 100 3 | 300 3 | 400 3 | 500 3 | 600 idでまとめて個数を出すとすると、 SELECT count(*) FROM tbl1 group by id とすれば count(*) 3 2 4 と結果が返ってきますが、この結果にidを足して id | count(*) 1 | 3 2 | 2 3 | 4 というようなSQLはどうやって書けばいいのでしょうか? MySQLでは、 SELECT id, count(*) FROM tbl1 group by id と書けるのですが、これは標準的なSQLではNGなそうなので、気になって質問しました。 よろしくお願いします。

  • count(*)のcountをとりたい

    現在、以下のようなテーブルを扱っているのですが、 +---------+ |accountid| +---------+ |   999| |   999| |   638| |   638| |   638| |   999| |   999| |   638| +---------+ を、ユニークな件数でとろうとしています。 現在は > select count(*) from TABLE group by accountid; +----------+ | count(*)| +----------+ |     4| |     4| +----------+ 2 rows in set (0.00 sec) などとして、「2 rows in set」を読むと言う方法なのですが、それだと人の手を介さないといけないのでどうにか出力結果をダイレクトに取得したいのです。 SQLサーバで使えるらしい select count(*) from (select count(*) from TABLE group by accountid) as AA; と言うSQL文を使っても無理だったので、どなたか方法をご存じないでしょうか???

    • ベストアンサー
    • MySQL
  • SQL 件数取得を速くしたい

    SQLでテーブルなどからSELECTされた件数を得る際に、 select count(*) from ~ 等とするかと思いますが、この結果が返ってくるのが遅くて困っています。 少しでも速く件数を得たいのですがどのような方法がありますでしょうか? 教えてください。 私が使っている環境はOracle 8iで 特に今回はgroup byを含むビューからの検索を行おうとしています。

  • SQL count 別名を条件に使用

    いつもお世話になっております。 標題についてご教授頂きたく質問させて頂きました。 [SQL} select A, B, count(*) as cnt from product where A=1 and cnt > 2 group by A order by cnt desc とこのようにSQLを記述して実行したのですが、 cnt>2でエラーが出ます。 order by には count の別名を使用できるのですが、 where句やHAVINGでは使えません。 この場合 cont(*)>2 またはcount(項目名)>2 としなければならないのでしょうか

  • count(*)

    countの使い方で、 select score, count(*) from mydb group by score; のように使う場合に、()の中に*ではなくて数字を入れても結果は同じでした。 数字を入れたサンプルソースは見たことがないのですが、あのかっこの中は*以外を使うことはありますか? select score, count(*) from mydb group by score which count(*) > 3; というのをやりたい場合、正しいSQLはどうなりますか?

    • ベストアンサー
    • MySQL
  • SQLの集計で「全て」の合計も表示したい

    SQLの集計について教えて下さい。DBはSQLiteかMySQLです(下記テストはSQLiteにて) 「meibo」テーブルから結果(1)を表示するにSQL文(1)で実現できました。 ●meiboテーブル name    type  univ ---------------------------------- 鈴木一郎  国立  東大 高橋ニ郎  国立  東大 田中三郎  国立  京大 山本四郎  公立  大阪府立大 佐藤五郎  私立  慶応大 小川六郎  私立  早稲田大 ●結果(1) type別の人数 type   合計 ------------------- 公立   1 国立   3 私立   2 ●SQL文(1) SELECT type, count(name) FROM meibo GROUP BY type ORDER BY type ; ここに「全ての合計」行を加えて結果(2)を表示したい場合、1つのSQL文で可能でしょうか? それともSQL文(2)のように2つの文で行なうか、SQL文(1)の結果をプログラム側で処理して全ての合計を得るなどするしかないでしょうか?(typeの「全て」は無くても構わない) もし1つのSQL文で可能ならどういう風になるのでしょうか? ●結果(2) type   合計 ------------------- 全て   6     ←この行を追加したい 公立   1 国立   3 私立   2 ●SQL文(2) SELECT type, count(name) FROM meibo ; SELECT type, count(name) FROM meibo GROUP BY type ORDER BY type ;

  • ORACLEでの件数カウント方法

    素人なので教えてください。sqlplusでレコード件数をカウントしたいのですが、チョット特殊なカウント方法なのです。やりたいことは、一回のSQL文で複数カラムのレコード件数をカウントしたいのですが可能でしょうか? 例) a_cdの件数カウントの場合は、 select a_cd,count(*) from abc group by a_cd; で b_cdの件数カウントの場合は、 select b_cd,count(*) from abc group by b_cd; これを一回のSQLで、 a_cdとb_cdの件数をカウント出来ますか?

  • 一つのSQLにできませんか??

    表領域のサイズと使用量を抽出するSQLを作成しています。 上は自動拡張サイズと現サイズを抽出するSQL、下は現在の使用量を抽出するSQLです。この二つを一つのSQLで作成ってできないでしょうか?? (1)自動拡張と現サイズを算出 select sysdate syoribi, a.tablespace_name, to_char(sum(a.MAXBYTES)/1024/1024, '999,999,990') jidou, to_char(sum(a.BYTES)/1024/1024, '9,999,990.9') gensaize from dba_data_files a group by a.tablespace_name (2)使用量を算出 select sysdate syoribi, b.tablespace_name, to_char(sum(b.BYTES)/1024/1024, '9,999,990.9') siyoryo from dba_segments b group by b.tablespace_name どうかよろしくお願いします。