假设我有一张如下表:
Scores
-----------------
User varchar(100)
Score int
表格中的数据如下:
'Jay' | 80
'Jay' | 90
'Jay' | 95
'Jay' | 73
'Max' | 95
'Max' | 80
'Max' | 75
我需要一个选择表的每一行的查询,然后按用户进行分数比较。如果得分是唯一得分或最高得分,则将其归类为“高”。如果用户具有多个分数并且该特定分数实例是最低分数,则将其归类为“低”。每个其他分数被归类为“meh”。查询会是什么样的?我希望输出看起来像这样:
'Jay' | 80 | 'Meh'
'Jay' | 90 | 'Meh'
'Jay' | 95 | 'High'
'Jay' | 73 | 'Low'
'Max' | 95 | 'High'
'Max' | 80 | 'Meh'
'Max' | 75 | 'Low'
答案 0 :(得分:3)
您需要一个窗口聚合函数,一个MIN / MAX组:
case
when score = max(score)
over (partition by user)
then 'High'
when score = min(score)
over (partition by user)
then 'Low'
else 'Meh'
end