【问题标题】:How to use group-by and get other rows results如何使用 group-by 并获取其他行结果
【发布时间】:2018-03-03 16:41:49
【问题描述】:

问题:如果这是我的数据:

col1,col2,col3,col4
===================
www.com,0,dangerous,reason A
www.com,1,dangerous 2,reason B

我想要第 2 列值为最大值的单个结果,所以我将在我的选择中使用 Max(col2) 函数 - 但我怎样才能获得对应的 col3 和 col4 行?

select 
    col1, max(col2), col3, col4
group by 
    col1

还有???

谢谢 伊丹

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql database group-by


【解决方案1】:

您可以使用order by 并限制为一行。 ANSI 标准语法是:

select t.*
from t
order by t.col2 desc
fetch first 1 row only;

并非所有数据库都支持fetch first 子句,因此您可能必须使用select top 1limit 或其他一些构造。

【讨论】:

  • 谢谢,但它不会将我所有的结果限制为一个吗?我需要它继续并在所有行上运行吗?
  • @idadolev 。 . .你什么意思?您的问题很明确:“我想要第 2 列值为最大值的单个结果”。如果您还有其他问题,您应该提出另一个(明确的)问题,包括示例数据、所需结果和正确的数据库标签。
  • col1,col2,col3,col4 =================== www.com,0,dangerous,reason A www.com,1,危险 2,原因 B www1.com,0,危险 3,原因 c www1.con,1,危险 4,原因 c 我希望每个 col1 得到一个结果,具有最高的危险数量和原因
【解决方案2】:

你可以在 select 语句中使用 where 喜欢

Select * from table name where col2=max(col2)

您可以使用单个值获取最大列整行

如果此时列 col2 包含与 1,1,2,2 相同的值,则上述查询返回 2 行。那时如果你想要单行你想使用这个

Select * from table name where col2=max(col2) fetch first 1 row only

可能会有帮助

【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多