将每行中的值与列的平均值进行比较 (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;