SQL-如何检索在另一列中有多个重复行的列上具有最高等级的行

笑脸维生素C

我对SQL还是很陌生,所以这可能是一个菜鸟问题:

假设我的查询是:

select [Item], [Answers] from table1

并检索下表:

Item     Answers
------------------
Car      Expensive
Car      Cheap
Car      Medium
Boat     Expensive
Boat     Very Expensive
Boat     Ultra Expensive

给定特定的第二张桌子(或字典,我真的不知道该怎么做){便宜:1,中:2,昂贵:3,非常昂贵:4,超昂贵:5}-表示“超昂贵”是最高等级,而“便宜”是最低等级。

在SQL中,对于这种在A列(项目)中有很多重复项的表,如何为A列中的每个唯一值检索B列(答案)中的最高排名值?

在这个例子中,我想得到:

Item     Answers
------------------
Car      Expensive
Boat     Ultra Expensive

在“项目”列中每个重复的值中只有一个,在“答案”中其排名最高的可能值是?

专线小巴

您可以使用相关子查询:

select item, answer
from table1 t
where answer = (
    select top 1 answer
    from table1 t1
    where t1.item = t.item
    order by
        case answer
            when 'Cheap' then 1
            when 'Medium' then 2
            when 'Expensive' then 3
            when 'Very Expensive' then 4
            when 'Ultra Expensive' then 5
        end desc
)

子查询使用条件子句和过滤answer具有给定最高排名的的子查询itemorder bytop 1

另一个选择是row_number()用于过滤:

select item, answer 
from (
    select 
        item, 
        answer,
        row_number() over(
            partition by item 
            order by case answer
                when 'Cheap' then 1
                when 'Medium' then 2
                when 'Expensive' then 3
                when 'Very Expensive' then 4
                when 'Ultra Expensive' then 5
            end desc
        ) rn
    from table1
) t
where rn = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL 函数删除另一列上具有特定日期和特定值的行

如何通过SQL中的另一列选择具有MAX(列值),DISTINCT的行?

SQL选择一列中具有重复值的所有行

T-SQL选择重复的行,其中至少一列具有值

sql:使用单个查询在另一列中选择具有相同列值的行

sql - 添加具有另一列總和的列以進行查詢

如果另一列在SQL Server中相同,则获取具有最小列值的行

SQL-返回数据集在具有多个聚合的一列上旋转

SQL SELECT全行,一列中有重复的数据

SQL:如何返回一列,该列是另一列上返回的行的总和?

SQL-计算在另一列中有多个输入的用户

SQL-一列中有多个

通过SQL中的另一列对具有重复值的列进行排序

ORACLE SQL 开发 | 仅选择一个具有最高值的重复行

根据另一列的值提取一列的所有行(SQL 查询)

Oracle-SQL为同一列中具有重复值的行分配相同的row_number

尝试根据另一列 SQL 中的 vlue 更新具有不同值的新列的行

SQL查询的结果中有重复的行

转置\枢轴对具有两列的行,其中一列是DateTime,另一列是SQL Server中的Text

SQL查询以选择记录在其中一列中值为= 0且在另一列中具有唯一ID的行

SQL:仅当在同一行中另一列具有不同的值时,才返回一列的值

如何基于SQL Server的另一列中的最高价值为每个客户获得一行

SQL-一行中有多个记录

SQL 显示具有相同一列值的行分组的行

SQL:根据另一列的值,在列上保留一行最大值

SQL选择在一列中具有重复值的不同行,然后根据主键字段中的值为每个重复项选择一行

PHP / SQL查找重复行一列,但条件是另一列是不同的

如何根据另一列 SQL 中的值创建具有计数值的新列

SQL重复的行具有多个左联接