可能性のある複製:
各グループの最後のレコードを取得する
3つのフィールドとデータを持つ1つのテーブルがあります。
名前、トップ、合計 猫、1、10 犬、2、7 猫、3、20 馬、4、4 猫、5、10 犬、6、9
Total
ごとにName
の値が最も高いレコードを選択したいので、結果は次のようになります。
名前、トップ、合計 猫、3、20 馬、4、4 犬、6、9
合計で名前順にグループ化してみましたが、グループ別のレコードの結果が最も多くなっています。誰かが私を案内してくれませんか?
select
Name, Top, Total
from
sometable
where
Total = (select max(Total) from sometable i where i.Name = sometable.Name)
または
select
Name, Top, Total
from
sometable
inner join (
select max(Total) Total, Name
from sometable
group by Name
) as max on max.Name = sometable.Name and max.Total = sometable.Total
あなたは次のようなことを試すことができます
SELECT s.*
FROM sometable s INNER JOIN
(
SELECT Name,
MAX(Total) MTotal
FROM sometable
GROUP BY Name
) sMax ON s.Name = sMax.Name
AND s.Total = sMax.MTotal
または、Exists句を使用して、両方のテーブルに存在する唯一の行を返します
SELECT * from sometable T
where exists
(select 1
from (SELECT nombre, max(total) as total FROM sometable TT
GROUP by nombre) TT
where T.name=TT.name
and T.total=TT.total
)