アプリ版:「スタンプのみでお礼する」機能のリリースについて

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件)

単に全てをさきに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
    • good
    • 0

#2です。

SQL例にROLLUPを入れ忘れました。

SELECT type, count(name) FROM meibo GROUP BY type WITH ROLLUP
    • good
    • 0

MySQLであれば、group by で rollup を指定すれば、合計も得られます。



実機確認してませんが、こんな感じです。

SELECT type, count(name) FROM meibo GROUP BY type

合計の行は、この場合は type列の値が null の行で総合計が返却されます。

なお、ROLLUP指定は標準SQLにも入りましたが、先行して実装しているRDBMSでは、指定方法が異なっている場合があるので注意してください。

>ただ、DESC付けると私立・国立・公立が降順になり、DESC無しだと「全て」が一番下になってしまいます。
>「全て」が一番上で残りが昇順(全て→公立→国立→私立)にするのはSQL的に可能でしょうか?

「公立」、「私立」などの文字コードを確認したうえで、言っているのでしょうか?
    • good
    • 0

SELECT '全て' タイプ, count(name) FROM meibo


union all
SELECT type タイプ, count(name) FROM meibo
GROUP BY type ORDER BY 1;

忘れたな~こんな感じだったような。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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的に可能でしょうか?

お礼日時:2009/12/15 22:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す