我正在尝试识别群组中的最大值。
我正在尝试Max和Min功能。 但是我不能得到最大值,只要有更大的一个,如果它们都是一样的话,我不想做任何事情。
预期结果 示例1
settings.py
预期结果 示例2
OWNER ACCOUNT MONEY isMAX
Admin account1 1000 YES
Admin account2 500 NO
Admin account3 300 NO
预期结果 示例3
OWNER ACCOUNT MONEY isMAX
Admin account1 500
Admin account2 500
Admin account3 500
我正在玩MAX,MIN和CASE功能。
答案 0 :(得分:1)
这样的事情:
select t.*,
(case when min(money) over (partition by owner, account) =
max(money) over (partition by owner, account)
then NULL
when money = max(money) over (partition by owner, account)
then 'YES'
else 'NO'
end) as isMax
from t;
答案 1 :(得分:1)
这应该这样做:
查询1 :
SELECT
t1.OWNER,
t1.money,
CASE
WHEN t1.money = t2.ma AND t1.money > T2.mi
THEN 'YES'
WHEN t1.money < T2.ma
THEN 'NO'
ELSE ''
END AS isMAX
FROM t t1
INNER JOIN (
SELECT OWNER, max(money) ma, min(money) mi
FROM t
GROUP BY OWNER
) t2
ON t1.OWNER = t2.OWNER
order by owner, ismax desc
<强> Results 强>:
| OWNER | MONEY | ISMAX |
|--------|-------|--------|
| Admin1 | 1000 | YES |
| Admin1 | 500 | NO |
| Admin1 | 500 | NO |
| Admin2 | 500 | (null) |
| Admin2 | 500 | (null) |
| Admin2 | 500 | (null) |
| Admin3 | 500 | YES |
| Admin3 | 500 | YES |
| Admin3 | 300 | NO |