Nis*_*nth 3 sql sorting group-by sql-order-by
原始表:职位
| Amount | Name |
3 Raj
1 Nish
15 Nish
10 Nish
8 Krish
22 Rahul
5 Raj
50 Raj
Run Code Online (Sandbox Code Playgroud)
所需结果格式
| Amount | Name |
50 Raj
5 Raj
3 Raj
22 Rahul
15 Nish
10 Nish
1 Nish
8 Krish
Run Code Online (Sandbox Code Playgroud)
我应用的逻辑是对金额列进行排序并获取最大金额,即 (50) 并获取该人的其他交易 (Raj),并继续搜索第二个最大项目,排除已选择的人员详细信息(排除 Raj)。
请在这件事上给予我帮助
我尝试先按“Amt”排序,然后按“名称”排序,但它不会产生预期的结果
该语句将给出每个名称及其最大数量。
select name, max(amount) as max_amt
from jobs
group by name
order by max_amt desc;
Raj 50
Nish 25
Rahul 22
Krish 8
Run Code Online (Sandbox Code Playgroud)
排序为max_amt desc我们提供了按正确顺序排列的组。现在我们需要做的就是将其连接到“jobs”表,并按两个数字列对结果进行排序。
我使用 CTE 来简化一些事情。
with max_amounts as (
select name, max(amount) as max_amt
from jobs
group by name
)
select t1.*, t2.max_amt from jobs t1
inner join max_amounts t2
on t2.name = t1.name
order by max_amt desc, amount desc;
Run Code Online (Sandbox Code Playgroud)
在标准 SQL 中,我认为您可以从外部 SELECT 子句中删除 max_amt ,并仍然使用order by max_amt desc.
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |