2016-07-11 10 views
0

ich keine Antwort für diese zu finden habe es geschafft, soSQL-Select-Gruppen mit Mindestgrößen

im Grunde, wie Sie eine SQL-Abfrage auf einem Datensatz zum ersten Gruppe führen Sie die Zeilen basierend auf einigen Spalten und wählen Sie dann/filtere nur die Gruppen mit mehr Zeilen als einer angegebenen Größe.

Heres ist ein Beispiel dafür, was ich mit einem Pandas Datenrahmen zu erreichen versuchen:

df.groupby([cols_to_group]).filter(lambda x: len(x) > minimum_group_size) 

Wie können Sie dies mit SQL-Abfrage durchführen?

+0

Welche DBMS verwenden Sie? Außerdem: [editieren] Sie Ihre Frage und fügen Sie die Tabellendefinitionen als 'create table' Anweisungen, einige Beispieldaten und die erwartete Ausgabe basierend auf diesen Daten hinzu. –

+1

Werfen Sie einen Blick auf: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html – Rumpelstinsk

+0

@a_horse_with_no_name PostgreSQL – user113531

Antwort

1

denke ich, eine Lösung das sein kann:

SELECT * 
FROM (
    SELECT * 
     , COUNT(*) OVER (PARTITION BY cols_to_group) as cnt -- cnt is length of each group 
    FROM yourTable) t 
WHERE t.cnt > minimum_group_size; 
+0

um Gruppen mit Mindestgröße zu erhalten, brauche ich 'WHERE tt .cnt> size; 'statt' WHERE tt.rn = 1; '? – user113531

+0

Danke! funktioniert jetzt – user113531