![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
任意の上位の集計を取得するにはどうしたらよいかわかりません。初めての質問なので、うまく表現できないことをご容赦ください。
例としてテーブルを記させていただきました。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) A列が指定数値以上になったらD列の計算式を変更 3 2022/07/11 11:03
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
SQLで連続したカラムが何個ある...
-
mysql5でGROUP BYごとにLIMIT??
-
割合(パーセント)を求めるには?
-
SQLだけでselect結果に定数を加...
-
空きのID番号を取得する方法
-
Select文1 マイナス Select文2
-
SQL文の入れ子について
-
任意の上位の集計を取得するには?
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
1の行を固定した上でVBAを用い...
-
データ
-
count関数の値をwhere句で使用...
-
SQL文 複数実行
-
AccessのSQL文で1件のみヒット...
-
並べ替えについて
-
枝番の最大値とその前のデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
24時間以内に更新されたデータ...
-
時間帯テーブルから直近空き時...
-
空きのID番号を取得する方法
-
LIMIT句で少なくとも1行は選択...
-
Mysqlで変数を使ったSELECT文の...
-
SQLにて順列の抽出
-
SQLだけでselect結果に定数を加...
-
任意の上位の集計を取得するには?
-
条件付けで集計したものをUNION...
-
mysql5でGROUP BYごとにLIMIT??
-
3テーブルの外部結合
-
MySQLのサブクエリ
-
時間帯テーブルから直近空き時...
-
SQLで連続したカラムが何個ある...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
おすすめ情報