我有一张表格,里面有关于城市的数据,包括他们的姓名,人口以及与我的问题无关的其他字段.
ID Name Population
1 A 45667
2 B 123456
3 C 3005
4 D 13769
Run Code Online (Sandbox Code Playgroud)
要查找最大人口是基本的,但我需要一个结果表,其中一列中有最大人口,另一列中有相应城市的名称
Population Name
123456 B
Run Code Online (Sandbox Code Playgroud)
我看过类似的问题,但由于某些原因,答案看起来过于复杂.有没有办法用1行或2行写入查询?
可能重复:
如何获取包含最大值的表的记录?
我有一个如下所示的聚合查询:
SELECT TrainingID, Max(CompletedDate) as CompletedDate, Max(Notes) as Notes --This will only return the longest notes entry
FROM HR_EmployeeTrainings ET
WHERE (ET.AvantiRecID IS NULL OR ET.AvantiRecID = @avantiRecID)
GROUP BY AvantiRecID, TrainingID
Run Code Online (Sandbox Code Playgroud)
哪个有效,并且大部分时间都返回正确的数据,但我注意到了一个问题.返回的Notes字段不一定与max(completedDate)来自的记录匹配.相反,它将是最长的字符串?或者具有最高ASCII值的那个?如果两个记录之间存在关联,SQL Server会做什么?我甚至都不确定.我想得到的是max(completedDate)记录中的notes字段.我应该怎么做呢?
假设我有一个这样的支付表:
PaymentID INT,CustomerID INT,Value INT,PaidOn DATE
我想针对每个客户的最高付款运行查询.这是否可以使用单个SQL查询,以避免挖掘我不感兴趣的每一行 - 或者更糟糕的是,为每个客户运行查询?
我到目前为止所提出的最好的是:
SELECT CustomerID,MAX(Value)FROM Payments GROUP BY CustomerID;
但这并没有给我找到的行的PaymentId或PaidOn值.