私は以下のようなテーブルを持っています。私は、test1とtest2の列平均を表示するSQL文と、mainの列と、positionの列を記述します。私はこのSQL試した特定の行の値の平均のSQL文グループの列
1
A
答えて
0
あなたが好きな何かができる:
select name, average as final,AVG(case when exam in('test1','test2')) as testa
from table
where exam='main'
order by main final
group by name;
しかし、それは働いていませんが....私は結果は次のように表示させたい 助けてください以下。
Select t1.name, average12, main, rownum from (
select t1.name as name, t1.avg(average) as average12, t2.mainexam as main
from <table> t1 left join <table> t2
on t1.id = t2.id
where t2.exam = 'Main'
group by t1.name, t2.mainexam
) order by main desc;
0
SQL Serverのこのクエリをお試しください:
SELECT
e.name AS 'Student Name'
, CAST(AVG(CASE WHEN e.Exam IN ('Test1', 'Test2') THEN e.average END) AS FLOAT) AS 'Test Average'
, e2.average AS 'Main Exam'
, ROW_NUMBER() OVER (ORDER BY e2.average DESC) AS 'Position'
FROM
exams AS e
INNER JOIN exams AS e2
ON e2.name = e.name
AND e2.exam = 'Main'
GROUP BY
e.name
, e2.average
ORDER BY
e2.average DESC
出力は次のとおりです。
+--------------+--------------+-----------+----------+
| Student Name | Test Average | Main Exam | Position |
+--------------+--------------+-----------+----------+
| Name1 | 60.5 | 89 | 1 |
| Name2 | 49.5 | 63 | 2 |
| Name3 | 73 | 38 | 3 |
+--------------+--------------+-----------+----------+
0
この単純なクエリの平均値のTest1とTest2を。あなたのdbmsに応じて、の名前のような予約語に問題があるかもしれません。
select name, cast(avg(average) as integer)
from test
where exam = 'Test1'
or exam = 'Test2'
group by name;
この簡単なクエリでは、「main」という値が得られます。
共通のテーブル式にまとめて「名前」を結合します。
with test_avg as (
select name, cast(avg(average) as integer)
from test
where exam = 'Test1'
or exam = 'Test2'
group by name
), main_avg as (
select name, average as main
from test
where exam = 'Main'
)
select t1.name, t1.avg, t2.main
from test_avg t1
inner join main_avg t2
on t1.name = t2.name;
name avg main -- Name1 61 89 Name2 50 63 Name3 73 38
私はあなたが位置によって何を意味するのか分かりません。行の順位を高い平均から最低の平均にする場合は、このようにすることもできます。
with test_avg as (
select name, cast(avg(average) as integer)
from test
where exam = 'Test1'
or exam = 'Test2'
group by name
), main_avg as (
select name, average as main
from test
where exam = 'Main'
)
select t1.name, t1.avg, t2.main, row_number() over (order by avg desc) as position
from test_avg t1
inner join main_avg t2
on t1.name = t2.name
order by position;
name avg main position -- Name3 73 38 1 Name1 61 89 2 Name2 50 63 3
0
あなたがここに最大で遊ぶことができます....その非常にシンプル
select a.*,row_number() over (order by main desc) as position from
(
select name,
AVG(case when exam in ('Test1','Test2') then Average else null end) as testa,
max(case when exam in ('Main') then Average else null end) as main
from abc
group by name
) a
order by name;
出力:
name testa main position1
Name1 60.50 89 1
Name2 49.50 63 2
Name3 73.00 38 3
+0
@kymb:それはうまくいったのですか? –
関連する問題
- 1. SQLグループの平均
- 2. 特定の行の平均
- 3. SQLのグループ化平均
- 4. グループ別の平均値
- 5. 特定の値の累積平均
- 6. 特定の行グループの合計値 - SQL
- 7. パンダ - 各グループ内の非マッチのマッチマイナス平均値の平均
- 8. 辞書リストの特定のキーの平均値/平均値を返す
- 9. ファイル内の特定の行の平均値
- 10. 特定の名前の特定の列の平均値を取得する
- 11. MySQLの数とグループの平均値は
- 12. SQLカウントサブセットの平均値
- 13. 変数の列の平均値または平均値を設定する
- 14. 文字の平均値
- 15. AWK:異なる測定系列の各行の平均値
- 16. グループ間の平均差の行列を得る方法R
- 17. DAX/PowerBI - 平均値グループ
- 18. Octaveで行列の累積平均値/平均値を求める方法は?
- 19. SQLは、平均値
- 20. 平均ピクセルのスカラリターン行列
- 21. 平均行列の構成
- 22. テーブルの特定の列の値の平均を取得する方法
- 23. 特定の時間の平均
- 24. 特定の範囲内の色平均
- 25. 数値が小さい配列のグループ平均?
- 26. Excel特定の平均:すべてのXとYの行
- 27. DatePartでグループ化されたSQL Server平均(平均)
- 28. matlabのセル配列の平均行列
- 29. 平均のSQLトリガー
- 30. 前の行のMYSQLの平均値
はここに位置何ですか? –
私は 'AVG(( 'test1'、 'test2'))'の検査で大文字と小文字が区別されるケースと考えます –
希望する結果を入力してください。これらの意味は明らかではありません。 –