Ich habe eine (Postgres
) Abfrage mit einer üblichen group by
Klausel:
select extract(year from a.created) as Year,a.testscoreid, b.irt_tlevel, count(a.*) as Questions
from asmt.testscores a join asmt.questions b
on a.questionid = b.questionid
where a.answered = True
group by Year,a.testscoreid, b.irt_tlevel
order by Year desc, a.testscoreid
Die Spalte b.irt_tlevel
hat die Werte low
, medium
und high
. Alle diese Ergebnisse liegen in einem Zeilenformat vor, zum Beispiel:
Year TestScoreId Irt_tlevel Questions
2015 1 Low 2
2015 1 Medium 3
2015 1 High 5
Ich möchte, dass meine Ergebnisse im folgenden Format vorliegen:
Year TestScoreId Low Medium High TotalQuestions
2015 1 2 3 5 10
Jede Hilfe wäre dankbar.
2 Antworten
Sie können die bedingte Aggregation verwenden, wenn bekannt ist, dass die Anzahl der unterschiedlichen Werte in der Spalte irt_tlevel festgelegt ist.
select
extract(year from a.created) as Year,
a.testscoreid,
sum(case when b.irt_tlevel = 'Low' then 1 else 0 end) as Low,
sum(case when b.irt_tlevel = 'Medium' then 1 else 0 end) as Medium,
sum(case when b.irt_tlevel = 'High' then 1 else 0 end) as High,
count(*) as Questions
from asmt.testscores a
join asmt.questions b on a.questionid = b.questionid
where a.answered = True
group by Year, a.testscoreid
order by Year desc, a.testscoreid
select
extract(year from a.created) as Year,
a.testscoreid,
b.irt_tlevel,
count(Irt_tlevel = 'low' or null) as "Low",
count(Irt_tlevel = 'medium' or null) as "Medium",
count(Irt_tlevel = 'high' or null) as "High",
count(a.*) as "TotalQuestions"
from
asmt.testscores a
join
asmt.questions b on a.questionid = b.questionid
where a.answered
group by Year, a.testscoreid
order by Year desc, a.testscoreid
Verwandte Fragen
Verknüpfte Fragen
Neue Fragen
sql
Structured Query Language (SQL) ist eine Sprache zum Abfragen von Datenbanken. Zu den Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) gehören. Wenn sich Ihre Frage ausschließlich auf ein bestimmtes DBMS bezieht (bestimmte Erweiterungen / Funktionen verwendet), verwenden Sie stattdessen das Tag dieses DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten ISO / IEC-Standard-SQL verwenden.