2016-08-17 5 views
1

Ich habe eine Liste von Personen, die Trainingseinheiten abgeschlossen haben. Ich muss alle Personen auswählen, die Sitzungen in Abständen von 5 abgeschlossen haben. So würde die Liste nur die Zeilen ziehen, wenn eine Person 5, 10, 15, 20 Sitzungen usw. erreicht hat.SQL Wählen Sie zwischen Intervallen

Name   Sessions 
John Smith  5 
Bill Smith  10 
Joe Smith  15 

Gibt es einen schnellen Weg, dies zu tun oder muss ich zu

SELECT WHERE sessions = 5 OR 10 OR 15 
+0

welche Version von SQL? Sie werden im Grunde nur überprüfen, ob modulo 5 == 0 – Dan

Antwort

0

Sie den Modulo-Operator verwenden können (%) wie folgt aus:

SELECT Stuff FROM Table WHERE (sessions % 5) = 0 

Der Modulo-Operator berechnet ein Rest. Wenn der Rest der sessions geteilt durch 5 Null ist, das heißt, dass sessions teilbar durch 5.

5

Try this:

SELECT col FROM table WHERE sessions % 5 = 0 
+0

Awesome! Vielen Dank! –

1

den Modulo/Restoperator von Ihrem RDBMS verwenden.

zum Beispiel in postgres

SELECT * 
    FROM YourTable 
    WHERE sessions % 5 = 0 
0

Ich denke du meinst, wo die Anzahl der Sitzungen sie von 5.

SELECT P.PersonId, Count(S.SessionId) 
FROM Person P 
INNER JOIN Sesssion S ON S.PersonId = P.PersonId 
GROUP BY P.PersonId 
HAVING Count(S.SessionId) % 5 = 0 

Die HAVING ist die wichtige Bit hier teilbar getan haben, ist.

+0

Ah - scheint das nicht will er will. Er kann nach einiger Normalisierung tun. – AntDC