SQL immer die richtigen Daten-Set mit Aggregat Abfrage
, so habe ich den Benutzer, Anrufe, SMS-Tabelle, jetzt will ich die Anzahl der eingehenden und ausgehenden Anrufe bekommen und SMS pro Benutzer
ich habe diese Abfrage
select u.username,
sum(case when c.type = 'incoming' then 1 else 0 end) as incoming,
sum(case when c.type = 'incoming' and status = 'true' then 1 else 0 end) as answered,
sum(case when c.type = 'outgoing' then 1 else 0 end) as outgoing,
sum(case when s.type = 'in' then 1 else 0 end) as sms
from user u
join
calls c
on u.id = c.user_id
join
sms s
on u.id = s.user_id
group by u.username;
und das Ergebnis ist diese
ankommende und abgehende in Anrufen korrekt ist, aber das Ergebnis ist falsch in Benutzer Probe in sms, sollte es 1 in Spalte sms und nicht 4
Vereinfachen Sie die Abfrage deb ug, entferne die Gruppe mit und summiere und sieh nach, ob das Ergebnis korrekt ist. Ich glaube, es gibt ein Problem in der "Join", so dass es mehr "SMS" produziert. –
Ich kann die Summe nicht entfernen, da ich die Anzahl der eingehenden und ausgehenden Anrufe benötige und wenn ich die Gruppe lösche, gibt es mir eine Zeile für den Beispielbenutzer –
Welcher [DBMS] (https://en.wikipedia.org/wiki/DBMS) verwendest du? –