
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 ;
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
単に全てをさきにORDER BY するだけ
SELECT '全て'as type , count(name) as 合計 FROM meibo
union all
SELECT type type, count(name) FROM meibo GROUP BY type
ORDER BY NOT type='全て' ,type ASC
No.3
- 回答日時:
#2です。
SQL例にROLLUPを入れ忘れました。SELECT type, count(name) FROM meibo GROUP BY type WITH ROLLUP
No.2
- 回答日時:
MySQLであれば、group by で rollup を指定すれば、合計も得られます。
実機確認してませんが、こんな感じです。
SELECT type, count(name) FROM meibo GROUP BY type
合計の行は、この場合は type列の値が null の行で総合計が返却されます。
なお、ROLLUP指定は標準SQLにも入りましたが、先行して実装しているRDBMSでは、指定方法が異なっている場合があるので注意してください。
>ただ、DESC付けると私立・国立・公立が降順になり、DESC無しだと「全て」が一番下になってしまいます。
>「全て」が一番上で残りが昇順(全て→公立→国立→私立)にするのはSQL的に可能でしょうか?
「公立」、「私立」などの文字コードを確認したうえで、言っているのでしょうか?
No.1
- 回答日時:
SELECT '全て' タイプ, count(name) FROM meibo
union all
SELECT type タイプ, count(name) FROM meibo
GROUP BY type ORDER BY 1;
忘れたな~こんな感じだったような。
回答ありがとうございます。
SELECT '全て' type , count(name) FROM meibo
union all
SELECT type type, count(name) FROM meibo GROUP BY type ORDER BY type DESC;
で
type 合計
-------------------
全て 6
私立 2
国立 3
公立 1
まで表示できました。
ただ、DESC付けると私立・国立・公立が降順になり、DESC無しだと「全て」が一番下になってしまいます。
「全て」が一番上で残りが昇順(全て→公立→国立→私立)にするのはSQL的に可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【初歩】ラジオボタンをつかっ...
-
チェックボックスの項目をDBにi...
-
SQLの集計で「全て」の合計も表...
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
初心者Mysqlの関数のsubstring...
-
SQL文で右から1文字だけ削除す...
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
GROUP BYを行った後に結合した...
-
SELECTで1件のみ取得するには?
-
Date型にNULLをセットしたい V...
-
ファイル書込みで一行もしくは...
-
accessのフォームで製品番号と...
-
ACCESSで大量の更新を行うと「...
-
Accessで別テーブルの値をフォ...
-
DataGridViewの、選択されてい...
-
ACCESS VBA テーブルデータに...
-
実績累計の求め方と意味を教え...
-
エクセルの出力方法で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使うべきでない文字。
-
【初歩】ラジオボタンをつかっ...
-
SQL文で右から1文字だけ削除す...
-
【MYSQL】asでリネームしてwher...
-
sum()の出力結果順に並び替えを...
-
MySQLで MAX()とGROUP BYを使う...
-
チェックボックスの項目をDBにi...
-
割合(パーセント)を求めるに...
-
SQLの集計で「全て」の合計も表...
-
表示幅を短くしたい
-
ビット演算
-
検索機能で条件を指定しない場...
-
Update文の書き方について
-
UNIONについて
-
[初心者]A表の2つの値からB表...
-
月別、販売員別の集計がわかり...
-
MySQLのクエリについて
-
今週の日曜日から土曜日までの...
-
初心者Mysqlの関数のsubstring...
-
カウント結果を1レコードの中...
おすすめ情報