suchen

Heim  >  Fragen und Antworten  >  Hauptteil

MySQL: Summe gruppierter Zeilen aus aggregierten Ergebnissen abrufen

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粉978742405P粉978742405304 Tage vor886

Antworte allen(1)Ich werde antworten

  • P粉819937486

    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

    Antwort
    0
  • StornierenAntwort