SQL 按列排序并同时按另一列分组

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”排序,然后按“名称”排序,但它不会产生预期的结果

Mik*_*ll' 5

该语句将给出每个名称及其最大数量。

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.