【问题标题】:Selecting the maximum value only for another maximum value仅为另一个最大值选择最大值
【发布时间】:2015-08-25 18:29:42
【问题描述】:

如果我在 SQL Server 中有两个 int 数据类型列,我如何编写查询以便在另一列的最大数量处获得最大数量?

让我举个例子。假设我有这张桌子:

|  Name | Version | Category | Value | Number | Replication |
|:-----:|:-------:|:--------:|:-----:|:------:|:-----------:|
| File1 | 1.0     | Time     |   123 |      1 |           1 |
| File1 | 1.0     | Size     |   456 |      1 |           1 |
| File2 | 1.0     | Time     |   312 |      1 |           1 |
| File2 | 1.0     | Size     |   645 |      1 |           1 |
| File1 | 1.0     | Time     |   369 |      1 |           2 |
| File1 | 1.0     | Size     |   258 |      1 |           2 |
| File2 | 1.0     | Time     |   741 |      1 |           2 |
| File2 | 1.0     | Size     |   734 |      1 |           2 |
| File1 | 1.1     | Time     |   997 |      2 |           1 |
| File1 | 1.1     | Size     |   997 |      2 |           1 |
| File2 | 1.1     | Time     |   438 |      2 |           1 |
| File2 | 1.1     | Size     |   735 |      2 |           1 |
| File1 | 1.1     | Time     |   786 |      2 |           2 |
| File1 | 1.1     | Size     |   486 |      2 |           2 |
| File2 | 1.1     | Time     |   379 |      2 |           2 |
| File2 | 1.1     | Size     |   943 |      2 |           2 |
| File1 | 1.2     | Time     |   123 |      3 |           1 |
| File1 | 1.2     | Size     |   456 |      3 |           1 |
| File2 | 1.2     | Time     |   312 |      3 |           1 |
| File2 | 1.2     | Size     |   645 |      3 |           1 |
| File1 | 1.2     | Time     |   369 |      3 |           2 |
| File1 | 1.2     | Size     |   258 |      3 |           2 |
| File2 | 1.2     | Time     |   741 |      3 |           2 |
| File2 | 1.2     | Size     |   734 |      3 |           2 |
| File1 | 1.3     | Time     |   997 |      4 |           1 |
| File1 | 1.3     | Size     |   997 |      4 |           1 |
| File2 | 1.3     | Time     |   438 |      4 |           1 |
| File2 | 1.3     | Size     |   735 |      4 |           1 |

如何编写查询以便在最大 Number 值处选择最大 Replication 值?如您所见,在此表中,Number 中的最大值为4,但Replication 中的最大值为Number = 4,其中1

我能想到的就是:

SELECT MAX(Replication) FROM Table
WHERE Number IS MAX;

这显然是错误的并且不起作用。

【问题讨论】:

  • 能否请您在这里发布您的预期结果

标签: sql sql-server


【解决方案1】:

你可以试试Group ByHaving

select max(Replication) from Table_Name group by [Number] having 
[Number]=(select max([Number]) from Table_Name)

【讨论】:

  • 就是这样!在分组和拥有方面,我仍然很笨拙。
【解决方案2】:

只需使用子查询来查找 where 子句中的最大数量。如果您只想要一个数字作为结果,则无需使用 group by 和 have(这会使查询更加昂贵):

select max([replication]) from tab
where number = (select max(number) from tab)

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 2012-05-29
    • 2011-04-05
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多