【问题标题】:SQl Query to Find Max Value from Min Results SetSQl 查询以从最小结果集中查找最大值
【发布时间】:2013-03-07 18:22:21
【问题描述】:

是否可以编写一个查询,从同一查询中检索到的一组最小值中找到最大值?

通过减小值(将所需的最大值留在列表顶部)来排序最小值很容易,但我很好奇是否可以构造一个只返回该值而不返回其他值的查询。

检索最小值的查询:

SELECT dbo.tblDevices.Status
, L.Device_id
, MIN(L.DateAndTime) As 'End Date'
FROM dbo.tblDeviceLocation AS L
JOIN dbo.tblDevices
ON L.Device_id = dbo.tblDevices.Device_id
GROUP BY L.Device_id, dbo.tblDevices.Status

我想找到这些分钟的最大值的行。我想过尝试使用子查询,但我认为它不起作用,因为它返回 N 最小值的行数。然后我想到了使用 COMPUTE,因为这可以被认为是小计,但这也不起作用,因为您不能对未分组的事物进行小计 (L.DateAndTime)。

有什么想法吗?

*编辑: 我刚刚看到这篇文章http://www.programmerinterview.com/index.php/database-sql/find-maximum-value-without-using-aggregate/,粗略的快速阅读可能适用。当/如果我发现了什么,我会更新。

【问题讨论】:

    标签: tsql subquery max min


    【解决方案1】:

    您可以使用 ORDER BY,如果您使用的是 SQL-Server TOP 1,如果您使用的是 MySQL,那么您必须在查询结束时使用 LIMIT 1

    SELECT TOP 1 dbo.tblDevices.Status
    , L.Device_id
    , MIN(L.DateAndTime) As 'End Date'
    FROM dbo.tblDeviceLocation AS L
    JOIN dbo.tblDevices
    ON L.Device_id = dbo.tblDevices.Device_id
    GROUP BY L.Device_id, dbo.tblDevices.Status
    ORDER BY MIN(L.DateAndTime) DESC // order by max value
    

    【讨论】:

    • @Snake_Plissken 没问题,我们都经历过那些日子。如果这解决了您的问题,请不要忘记将其标记为已接受的答案。
    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多