Ich habe eine Zwischentabelle namens ratingsPerId, die von einer gespeicherten Prozedur hier gezeigt hergestellt:Zählen übereinstimmenden Bewertungen nach ID ohne Verwendung von Tabellen Joins? Ist es möglich? MySQL?
wollenId Rating
'1', 'low'
'1', 'low'
'1', 'low'
'1', 'low'
'1', 'low'
'2', 'medium'
'2', 'medium'
'2', 'medium'
'2', 'high'
'2', 'high'
'4', 'high'
'4', 'high'
'4', 'high'
'4', 'high'
'4', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
'9', 'high'
Was ich für Id 1, zählen alle Tiefen, Medien, Höhen ist. Und das gleiche für alle folgenden Id 2, 4, 9, etc ...
Gerade jetzt, was ich habe, ist ein Tisch kommen, dass zählt die Hochs und Tiefs pro ID:
drop temporary table if exists t1, t2;
create temporary table t1(ruleid int, high INT);
INSERT into t1(
SELECT ruleid, count(*) AS High from ratingsPerRuleId WHERE rating='high' group by ruleid);
create temporary table t2(ruleid int, low int);
INSERT into t2(
SELECT ruleid, count(*) AS Low from ratingsPerRuleId WHERE rating='low' group by ruleid);
SELECT t1.RuleID, t1.high, t2.low from t1 left join t2 on t1.ruleid=t2.ruleid ;
ID High Low
1 NULL 5
2 2 NULL
4 5 NULL
9 9 NULL
Wie Sie kann ich sehen, ich muss eine dritte Tabelle für Medium erstellen und einen Join von diesem ausführen, um die Medium-Spalte zu erhalten.
Gibt es eine einfachere Möglichkeit, dies in MYSQL zu tun? Ich habe das Gefühl, dass es eine einfache Aussage gibt, die dies bewerkstelligen kann, und meine chaotischen Tabellenverbindungen von kleinen Tabellen sind nicht notwendig, aber ich weiß nicht genug von MySQL, um die Antwort zu bekommen.
Ich schaute in Count (distinct) und Select Distinct, aber habe nicht die Antwort gefunden.
Danke!
Mögen Sie diese führen wollen: für jede ID Gesamt Hoch, Medium-Gesamt und insgesamt niedrige Zahl? – 1000111
ja! Ich will das Ergebnis einfach so – truffle