Rumah  >  Soal Jawab  >  teks badan

MySQL: Dapatkan jumlah baris terkumpul daripada hasil agregat

Andaikan saya mempunyai statistik bilangan lawatan oleh pengguna di setiap negara:

Pertanyaan adalah seperti berikut:

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

Hasilnya adalah seperti berikut:

user_id | countries | count_visit
-------------------------------
111     | Norway    |   5
111     | Japan     |   2
...     | ...       |   ...

Sekarang, biasanya, saya akan melakukan ini pada tahap kod. Walau bagaimanapun, atas sebab yang bodoh saya ingin menambah lajur tambahan pada set hasil yang merupakan jumlah lawatan oleh pengguna, tanpa mengira negara.

Jadi, hasilnya akan menjadi:

user_id | countries | count_visit |  overall_visit
---------------------------------------------------
111     | Norway    |   5         |   7
111     | Japan     |   2         |   7
...     | ...       |   ...       |   ...

P粉978742405P粉978742405235 hari yang lalu829

membalas semua(1)saya akan balas

  • P粉819937486

    P粉8199374862024-02-27 13:01:46

    mungkin anda memerlukan 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

    balas
    0
  • Batalbalas