Gruplandırılmış SQL sonuçları her grup için max değer olan kayıtları getir
Nasıl her gruplandırılmış ayarlamak için max değer içeren satırları alabilirim?
Fazlasıyla karmaşık bu soru üzerine varyasyonlar bazı ve iyi bir cevap hiç görmedim. Birlikte olabildiğince basit örnek vermeye çalıştım:
Kişi, grup ve yaş sütunları ile böyle bir tabloda, verilen, nasıl, her bir gruptaki en yaşlı kişi alır mısın? (Bir grup içinde bir kravat ilk alfabetik sonuç verecektir)
Person | Group | Age
---
Bob | 1 | 32
Jill | 1 | 34
Shawn| 1 | 42
Jake | 2 | 29
Paul | 2 | 36
Laura| 2 | 39
Sonuç kümesi istenen:
Shawn | 1 | 42
Laura | 2 | 39
CEVAP
Mysql bunu yapmak için süper basit bir yolu var:
select *
from (select * from mytable order by `Group`, age desc, Person) x
group by `Group`
Bu mysql için izin olduğun için çalışıyordeğiltoplama olmayan bir grup tarafından ve bu durumda sadece döner mysql sütunları,ilksatır. Çözüm ilk verileri her bir grup için istediğiniz satır, değeri istediğiniz sütunları tarafından ilk grup olan böyle bir emir.
Size önlemek karmaşık alt sorgular denemek için Bul max()
vb, ve aynı zamanda sorunların dönen birden fazla satır olduğunda birden fazla kişi ile aynı maksimum değere (diğer cevaplar yapardı)
Not:Bu birmysql sadeceçözüm. Biliyorum tüm diğer veritabanları "sigara toplanan sütunlar maddesi" ya benzer. grupla yer almayan ileti SQL sözdizimi bir hata atmak olacaktır "Titiz" bu şeytan işi olduğu için sözdizimi, ama çok kullanışlı! düşünün biraz
Nasıl bir tablo var olan bir tablodaki...
Zaten Git deposu için kaydedilmiş olan...
C için bir sebep mi'#; dosyalarda ...
Nasıl sahnelenecek olan değişiklikleri...
Bir ınt32 için en büyük değer nedir?...