我需要这样的结果集:
First Last Amount
Bob Nolan 789
Bob Nolan 0
Bob Nolan 23
Bob Nolan 55
Mavis Li 3030
Mavis Li 0
Mavis Li 213
Mavis Li 449
这个人的第一个记录应该总是给我最高的金额,然后第二个等等应该给我从最低到最高。
我该如何排序?
由于
答案 0 :(得分:3)
来自你的评论:
该人的第一记录实际上是他们的总工资。第二个 实际上是他们从那些总额中支付的税款 工资。
为什么不为事务类型添加一列,然后在排序中使用该列?
更新 - 致力于Alex
为了让我的回答更多,回答",查询将是这样的:
select *
from yourTable
order by
firstName,
lastName,
IF(transactionType='grossWages', 0, 1),
amount;
答案 1 :(得分:3)
如果绝对无法改变结构...
SELECT t1.*
FROM table t1
JOIN (
SELECT first, last, MAX(amount) max
FROM table
GROUP BY first, last
) t2
ON t2.first = t1.first
AND t2.last = t1.last
ORDER BY t1.first,
t2.last,
t1.amount = t2.max DESC,
t1.amount
我会认真考虑添加一列来显示交易类型。
顺便说一句..税收也可能是负面交易,因此在这些税前面加一个减号就可以ORDER BY first, last, amount DESC
。
答案 2 :(得分:1)
请相应更改表名。
select * from so_30240116 a where
a.amount=(
select max(b.amount) from so_30240116 b
where a.first=b.first and a.last=b.last group by b.first, b.last
)
union
select * from so_30240116 a where
a.amount!=(
select max(b.amount) from so_30240116 b
where a.first=b.first and a.last=b.last group by b.first, b.last
)
order by first,last