
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を探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
何にかが違うから エラーなんで...
-
【初歩】ラジオボタンをつかっ...
-
割合(パーセント)を求めるに...
-
チェックボックスの項目をDBにi...
-
初心者Mysqlの関数のsubstring...
-
MySQLで MAX()とGROUP BYを使う...
-
カウント結果を1レコードの中...
-
sum()の出力結果順に並び替えを...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
OracleのSQL*PLUSで、デー...
-
差し込み印刷のレコード数について
-
Excelで、改行がある場合の条件...
-
SELECTの結果で同一行を複数回...
-
ORDER BY 半角カナ
-
ADO VBA 実行時エラー3021
-
GROUP BYを使ったSELECT文の総...
-
DataGridViewの、選択されてい...
-
最新の日付とその金額をクエリ...
-
SQL>UPDATEと同時にその件数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使うべきでない文字。
-
【初歩】ラジオボタンをつかっ...
-
SQL文で右から1文字だけ削除す...
-
【MYSQL】asでリネームしてwher...
-
sum()の出力結果順に並び替えを...
-
MySQLで MAX()とGROUP BYを使う...
-
チェックボックスの項目をDBにi...
-
割合(パーセント)を求めるに...
-
SQLの集計で「全て」の合計も表...
-
表示幅を短くしたい
-
ビット演算
-
検索機能で条件を指定しない場...
-
月別、販売員別の集計がわかり...
-
Update文の書き方について
-
UNIONについて
-
[初心者]A表の2つの値からB表...
-
MySQLのクエリについて
-
今週の日曜日から土曜日までの...
-
初心者Mysqlの関数のsubstring...
-
カウント結果を1レコードの中...
おすすめ情報