SORU
24 AĞUSTOS 2012, Cuma


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
24 AĞUSTOS 2012, Cuma


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008