任意の上位の集計を取得するにはどうしたらよいかわかりません。初めての質問なので、うまく表現できないことをご容赦ください。
例としてテーブルを記させていただきました。
testというテーブルに以下のようにデータが入っているtestというテーブルを想定しています。u_0で降順で上位3つのu_0とa_0を取得したいのですが、
select sum(u_0),sum(s_0) order by u_0 desc limit 0,3
では当然全集計となりますので意図したものとの結果になりません。
是非、ご教授いただければ幸いです。
+--------+------+
| u_0 | s_0 |
+--------+------+
| 510 | 1 |
| 1701 | 9 |
| 22454 | 91 |
| 43271 | 148 |
| 2979 | 9 |
| 618 | 8 |
| 161148 | 420 |
| 6657 | 21 |
| 12562 | 17 |
| 7619 | 25 |
+--------+------+
sum(u_0)=161148+43271+22454
sum(a_0)=420+148+91
取得したいのは
+----------+----------+
| sum(u_0) | sum(s_0) |
+----------+----------+
| 226873 | 659 |
+----------+----------+
ということなのですが、よろしくお願い申し上げます。
No.2ベストアンサー
- 回答日時:
ちょっとかんがえてみたんですが、こんな感じでもできます。
ただindexがあまり利かないので効率的ではないですね。
もう少しなにかあるかもしれません。
SELECT sum( (
rank_u <=3
) * u_0 ) , sum( (
rank_s <=3
) * s_0 )
FROM (
SELECT (
SELECT COUNT( * ) +1
FROM test AS t2
WHERE t2.u_0 > t1.u_0
) AS rank_u, (
SELECT COUNT( * ) +1
FROM test AS t2
WHERE t2.s_0 > t1.s_0
) AS rank_s, u_0, s_0
FROM test AS t1
) AS SUB
ご回答ありがとうございます。今回の文は現在理解が出来ていません。
と、申しますのも、私は雪国で開発をやっていまして、全国ニュースになっている豪雪状況でシステムを組むより除雪で体力を消耗しすぎて、やっと本日(2009/12/22)拝見することが出来たしだいです。
早速、分析させていただきたいと思います。
ありがとうございました。
No.1
- 回答日時:
なんか簡単な方法がありそう気がしますが、単純に命題を実行するとこんなかんじ
select sum(u_0),sum(s_0)
FROM
(
(select u_0,0 as s_0 from test order by u_0 DESC limit 3)
union all
(select 0,s_0 from test order by s_0 DESC limit 3)
) as sub
この回答への補足
やっと理解が出来ました。もう一つ n_0というカラムがありそれも降順で同様に処理をする場合は
select sum(u_0),sum(s_0),sum(n_0)
FROM
(
(select u_0,0 as s_0,0 as n_0 from test order by u_0 DESC limit 3)
union all
(select 0 as u_0,s_0,0 as n_0 from test order by s_0 DESC limit 3)
union all
(select 0,0,n_0 from test order by n_0 DESC limit 3)
) as sub
で対応が出来ました。
ありがとうございました。
早速ご回答を頂戴いたしまして、ありがとうございました。
本当に思ったとおり結果がでました。
SQL文は本当に初心者でわかりませんでしたし、ご回答の意味もこれから調べます。自己結合なんだろうと思うだけです。詳しく勉強させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
サブクエリの使い方
-
group by したものをsumしたの...
-
割合(パーセント)を求めるには?
-
空きのID番号を取得する方法
-
SQLローダーCSV取込で、囲み文...
-
【PL/SQL】FROM区に変数を使う方法
-
SQL*Loader Append
-
テーブルの最後(最新)のレコー...
-
int型フィールドにnullを登録で...
-
ファイルの漢数字の順番につい...
-
AccessのSQL文で1件のみヒット...
-
エクセル、並び替え正しくソー...
-
配列に指定した値が含まれてい...
-
レコードの登録順がおかしい
-
count関数の値をwhere句で使用...
-
ワイルドカード検索として合致...
-
SQLで、同じ値が何回連続す...
-
数字と漢字が混じった日付デー...
-
DBA Studioの代わり
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
時間帯テーブルから直近空き時...
-
Mysqlで変数を使ったSELECT文の...
-
空きのID番号を取得する方法
-
mysql5でGROUP BYごとにLIMIT??
-
SQLで連続したカラムが何個ある...
-
LIMIT句で少なくとも1行は選択...
-
時間帯テーブルから直近空き時...
-
条件付けで集計したものをUNION...
-
任意の上位の集計を取得するには?
-
SQLにて順列の抽出
-
24時間以内に更新されたデータ...
-
group by したものをsumしたの...
-
サブクエリの使い方
-
SQLローダーCSV取込で、囲み文...
-
【PL/SQL】FROM区に変数を使う方法
-
ファイルの漢数字の順番につい...
-
テーブルの最後(最新)のレコー...
おすすめ情報