将每行中的值与列的平均值进行比较 (SQL)
Compare value in each row to average of the column (SQL)
我正在尝试创建一个视图,其中将每一行的分数与该列的平均分数进行比较,以便我可以通过粗略的“等级”轻松识别记录。简化代码:
select recordID,
case when table.ColumnA>avg(all table.ColumnA) then 'Hard' else 'Easy' end as Difficulty,
from table
group by recordID, ColumnA
我尝试了各种组合,案例公式一直默认为 'else',经调查似乎每个计算值都为 0,因为行值和平均值被认为是相同的。
我觉得答案与 Rollup
有关,无论是在这个 table 还是在源 table 上,但所需的语法超出了我的范围。
有人吗?
你想要一个 window 函数:
select recordID,
(case when table.ColumnA > avg(table.ColumnA) over ()
then 'Hard' else 'Easy'
end) as Difficulty
from table;
我正在尝试创建一个视图,其中将每一行的分数与该列的平均分数进行比较,以便我可以通过粗略的“等级”轻松识别记录。简化代码:
select recordID,
case when table.ColumnA>avg(all table.ColumnA) then 'Hard' else 'Easy' end as Difficulty,
from table
group by recordID, ColumnA
我尝试了各种组合,案例公式一直默认为 'else',经调查似乎每个计算值都为 0,因为行值和平均值被认为是相同的。
我觉得答案与 Rollup
有关,无论是在这个 table 还是在源 table 上,但所需的语法超出了我的范围。
有人吗?
你想要一个 window 函数:
select recordID,
(case when table.ColumnA > avg(table.ColumnA) over ()
then 'Hard' else 'Easy'
end) as Difficulty
from table;