2016-03-20 21 views
2

Sınıfına atanmış tüm sınamaları listeleyen ClassWithTest adlı bir tablo var. Aşağıya bakınız:SQL Query'de en yüksek geri sayım değeri

ClassNum TestCode 
111  EngTest 
111  MatTest 
111  SciTest 
111  GerTest 
222  TecTest 
333  HisTest 
333  LonTest 
333  CodTest 
333  SpaTest 
333  SwmTest 

Şimdi, sınıfa alınacak en fazla sınama ile geri dönen bir sorguyu çalıştırmak istiyorum. Ben zaten üzerinde çalışmaya başladı ettik ve bugüne kadar bu üretilen ettik: Bu sonuç döndürür

SELECT ClassNum, COUNT(testCode) 
FROM ClassWithTest 
GROUP BY ClassNum; 

:

ClassNum TestCode 
111  4 
222  1 
333  5 

ben sadece ClassNum 333 dönmek istiyorum edilir sorunumuz onun Kendi sınıfında, en çok test edilecek olan sınıf. Bunu nasıl yapabileceğimi bilen var mı?

cevap

1

Bunu, order by kullanarak ve ilk satırı almanın bir yolunu kullanarak yapabilirsiniz. ANSI SQL geçerli: MySQL ve SQLite, sen FETCH maddesinin yerine LIMIT 1 kullanacağı

SELECT ClassNum 
FROM ClassWithTest 
GROUP BY ClassNum 
ORDER BY COUNT(testCode) DESC 
FETCH FIRST 1 ROW ONLY; 

. SQL Server'da, FETCH yan tümcesi yerine SELECT TOP 1 kullanırsınız.

+0

Teşekkürler Gordon Linoff, işe yarıyor! Bu FETCH maddesinin farkında değildim. Bu yararlı maddeleri listeleyen bir web sitesi biliyor musunuz? Yine, yardım için teşekkürler. – mrteeth

+0

@mrteeth. . . Kullandığınız veritabanı, SQL sürümünde oldukça iyi belgelere sahiptir. –

+0

Gordon, profilinize baktıktan sonra, kitabımı gelecekte satın almak için amazon dilek listesine aldığımı fark ettim. : D – mrteeth