
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で質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複をせずに2つのフィールドを...
-
JOINでの結果取得 サブクエリ...
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
MySQLで変数やループ、上位3名...
-
【初歩】ラジオボタンをつかっ...
-
SQLの集計で「全て」の合計も表...
-
割合(パーセント)を求めるに...
-
MySQL 副問い合わせ(IN)での...
-
LIKE述語/SQLとPHPを使った検...
-
重複が
-
月別、販売員別の集計がわかり...
-
抽出時のことで質問です
-
【MYSQL】asでリネームしてwher...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
OracleのSQL*PLUSで、デー...
-
Accessで別テーブルの値をフォ...
-
Date型にNULLをセットしたい V...
-
access2003で学籍番号から生徒...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使うべきでない文字。
-
SQL文で右から1文字だけ削除す...
-
MySQLで MAX()とGROUP BYを使う...
-
sum()の出力結果順に並び替えを...
-
割合(パーセント)を求めるに...
-
【MYSQL】asでリネームしてwher...
-
SQLの集計で「全て」の合計も表...
-
カウント結果を1レコードの中...
-
表示幅を短くしたい
-
【初歩】ラジオボタンをつかっ...
-
何にかが違うから エラーなんで...
-
phpmyadminはトリガーやIF文を...
-
姓名の前後を入れ替えるSQL命令...
-
1つのテーブルから複数のテーブ...
-
月別、販売員別の集計がわかり...
-
mySQLでグループ別の順位を入力
-
MySQL関数max()を条件にSELECT...
-
MySQLにて特定レコードのみを抽...
-
SQLサーバーは[main]![No]とい...
-
チェックボックスの項目をDBにi...
おすすめ情報