Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Wie erstelle ich einen Wert für eine neue Spalte basierend auf der Anzahl einer vorhandenen Spalte nach Gruppen?

Ich denke, Sie wollen nur bedingte Aggregation, keine Unterabfragen:

select Max(Counting) as Total, student, stdType,
       sum(case when score = '3' then 1 else 0 end) as Score3,
       sum(case when score = '4' then 1 else 0 end) as Score4
from #tempBWMSHonors3
group by student, stdType;

Hinweis:Wenn es sich bei der Punktzahl um eine Zahl und nicht um eine Zeichenfolge handelt, sollten Sie keine einfachen Anführungszeichen für die Konstante verwenden.