2016-04-11 17 views
0

Zum Beispiel Ich habe eine Tabelle, die wie folgt aussieht:Wie kann die Größe jeder Gruppe in SQL begrenzt werden?

(ID, TEXT, CLASS) 
(0L, "a b c d e spark", 1.0), 
(1L, "b d", 0.0), 
(2L, "spark f g h", 1.0), 
(3L, "hadoop mapreduce", 0.0), 
(3L, "hadoop mapreduce", 1.0), 
(4L, "b spark who", 1.0), 
(5L, "g d a y", 0.0), 
(6L, "spark fly", 1.0), 
(7L, "was mapreduce", 0.0), 
(8L, "e spark program", 1.0), 
(9L, "a e c l", 0.0), 
(10L, "spark compile", 1.0), 
(11L, "hadoop software", 0.0) 

Ich mag eine Tabelle auszuwählen, die die Größe der einzelnen Klasse 2 zu begrenzen, während nur die Zeilen zu halten, die kleinste IDs hat, gibt es einen SQL-Befehl, der tun kann, Dies?

+3

welche DBMS verwenden Sie? –

+0

Es ist wichtig, uns zu zeigen, was Sie versucht haben, um dieses Problem zu lösen. Auch ein visuelles Beispiel für Ihre erwartete Ausgabe kann uns helfen, besser zu verstehen, was Sie brauchen. –

Antwort

1

Der ANSI-Standard-Methode ist row_number() zu verwenden:

select t.* 
from (select t.*, 
      row_number() over (partition by class order by id) as seqnum 
     from t 
    ) t 
where seqnum <= 2; 

Die meisten (aber nicht alle) Datenbanken unterstützen diese Funktionalität.

Verwandte Themen