mysql - 获取子查询的最大值后显示该行的其他值

标签 mysql sql

所以我有这个查询:

select MAX(C.Sales) as 'NumOfSales'
from
    (select COUNT(SalesOrderID) as 'Sales',
    TerritoryID
    from Sales.SalesOrderHeader
    group by TerritoryID) C

现在它只显示 C.Sales 的最大值 我希望能够获得最大值的 Territory。

最佳答案

按前 1 行降序排列:

SELECT TOP 1 COUNT(SalesOrderID) AS Sales,
    TerritoryID
FROM Sales.SalesOrderHeader
GROUP BY TerritoryID
ORDER BY Sales DESC

如果您需要具有相同最大销售额的所有行,则涉及更多: 以下是通过一些示例数据实现此目的的方法:

DECLARE @SalesOrerHeader TABLE 
( 
    SalesOrderID INT IDENTITY(1,1),
    TerritoryID INT
)

INSERT INTO @SalesOrerHeader (TerritoryID) VALUES
(1),(1),(2),(2),(2),(2),(3),(4),(4),(4),(5),(5),(5),(5)

DECLARE @final TABLE 
(
    TerritoryID INT,
    NumberOfSales INT
)

INSERT INTO @final
SELECT TerritoryID, COUNT(SalesOrderID) AS NumberOfSales FROM @SalesOrerHeader
GROUP BY TerritoryID

SELECT * FROM @final
WHERE NumberOfSales = (SELECT MAX(NumberOfSales) FROM @final)

输出:

TerritoryID NumberOfSales
2           4
5           4

关于mysql - 获取子查询的最大值后显示该行的其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529587/

相关文章:

php - mysql - 仅从同一个表中获取具有差异的结果

MySQL 触发器为 auto_increment 索引生成哈希

mysql - 需要根据列的值拉取按列排序的sql语句

python - Django 表关系及其调用方式说明

sql - Postgres JSON 数组带有连接?

mysql - 标量子查询

sql - 语法错误

mysql - 如何查找开始日期和结束日期之间的所有列值?异常输出

mysql - 计算执行查询时的时间差

mysql - 在 SQL 中,如何检索包含另一个集合的所有值的集合?