그래서 저는 이런 테이블이 있습니다 ...
person | account | accountbalance
--------------------------------------------
1 a 100
1 b 250
1 c 283
2 a 25
2 b 199
3 a 65
그리고 각 사람에 대해 가장 높은 잔액을 가진 계정을 찾아야합니다. 나는 지금 이것을하고있다 :
SELECT person, account, accountbalance FROM mytable
AND accountbalance=
(SELECT MAX(accountbalance) FROM mytable);
그러나 이것은 각 사람이 아닌 모두 중 하나의 최상위 계정 만 반환합니다.
한 가지 방법은 파생 테이블에서 최대 값을 계산하고이를 결합하는 것입니다.
SELECT mytable.person, account, accountbalance
FROM mytable
JOIN (
SELECT person, MAX(accountbalance) MaxAccountBalance
FROM mytable
GROUP BY person
) t ON mytable.person = t.person
AND mytable.accountbalance = t.MaxAccountBalance;
또는 where 절에서 상관 된 하위 쿼리를 수행 할 수 있습니다 (거의 수행 한 작업입니다. 필요한 상관 관계를 놓쳤습니다).
SELECT person, account, accountbalance
FROM mytable m1
WHERE accountbalance = (SELECT MAX(accountbalance) FROM mytable WHERE person = m1.person);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다