2016-05-05 9 views
1

hinzufügen Die folgende Abfrage ermöglicht es mir, den Typ der Klasse zu zählen, die ein Schüler nimmt.Müssen die Anzahl in Select

SELECT student_schedule.Grade, LEFT(student_schedule.Course,2) AS 'Type', 
COUNT(*) AS 'Count' 
FROM student_schedule 
GROUP BY Type, Grade 
ORDER BY Grade, Type 

Das Ergebnis ist:

enter image description here

würde ich jetzt das Verhältnis wie durch Grade für jeden Typ zu finden. Die vierte Spalte nach Count wäre (303 + 529 + 50 oder 882) für alle Zeilen der Note 7 und (719 + 139 + 15 oder 873) für die Note 8. Ich brauche eine SUMME in meiner SELECT-Anweisung, denke ich. Zur Klarstellung wäre die vierte Spalte 882 für die 7. Klasse und 873 für die 8. Klasse in jeder Reihe für diese Klasse. Jede Hilfe wäre willkommen.

+0

"GROUP BY Typ, Grad" irgendwie verhindert, dass Sie weitere Gruppierung ("GROUP BY Grade") ... Eine Option wäre das Abrufen von Ergebnissen und das Iterieren der Datensätze zum Hinzufügen von Zählern nach Noten. – Webomatik

Antwort

2

Versuchen Sie folgendes:

SELECT 
    o.Grade as 'Grade', 
    LEFT(student_schedule.Course,2) AS 'Type', 
    COUNT(*) AS 'Count', 
    COUNT(*)/(SELECT COUNT(*) FROM student_schedule as i WHERE i.Grade = o.Grade) as 'ratio' 
FROM student_schedule as o 
GROUP BY Type, Grade 
ORDER BY Grade, Type 
+0

Ooooh, du bist gut .... Kudos zu @Jay S – Webomatik

+0

Erfolg. Danke für die schnelle Lösung. Genial. – user3258571

+0

Froh, @ user3258571 zu helfen –

0

Versuchen Sie, die folgende Abfrage für Ihre Anforderung

SELECT t.Grade,t.Type,t.Count,sum(t.Count) from 
(SELECT student_schedule.Grade AS 'Grade', LEFT(student_schedule.Course,2) AS 'Type', 
COUNT(*) AS 'Count' 
FROM student_schedule 
GROUP BY Type, Grade 
ORDER BY Grade, Type) as t 
GROUP BY t.Count 
Verwandte Themen