Heim > Fragen und Antworten > Hauptteil
Angenommen, ich habe Statistiken über die Anzahl der Besuche von Benutzern in jedem Land:
Die Abfrage lautet wie folgt:
SELECT countries_users.user_id, countries.name, count(countries_users.id) as count_visit FROM countries_users LEFT JOIN countries on countries.id = countries_users.user_id WHERE countries_users.user_id IN (111, ...) GROUP BY countries_user.user_id, countries.id
Die Ergebnisse sind wie folgt:
user_id | countries | count_visit ------------------------------- 111 | Norway | 5 111 | Japan | 2 ... | ... | ...
Normalerweise würde ich das auf Codeebene tun. Aus irgendeinem dummen Grund möchte ich jedoch eine zusätzliche Spalte zur Ergebnismenge hinzufügen, die die Gesamtzahl der Besuche des Benutzers angibt, unabhängig vom Land.
Das Ergebnis wird also sein:
user_id | countries | count_visit | overall_visit --------------------------------------------------- 111 | Norway | 5 | 7 111 | Japan | 2 | 7 ... | ... | ... | ...
P粉8199374862024-02-27 13:01:46
may you need a subquery
SELECT cu.user_id, c.name AS countries, count(cu.id) AS count_visit, visitall.total_count_visit AS overall_visit FROM countries_users cu LEFT JOIN countries c ON c.id = cu.user_id LEFT JOIN ( SELECT user_id, SUM(count(id)) AS total_count_visit FROM countries_users WHERE user_id IN (111, ...) GROUP BY user_id ) AS visitall ON cu.user_id = visitall.user_id WHERE cu.user_id IN (111, ...) GROUP BY cu.user_id, c.id, visitall.total_count_visit