MySQL: Dapatkan jumlah baris terkumpul daripada hasil agregat
P粉978742405
P粉978742405 2024-02-26 23:21:28
1
1
895

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粉978742405
P粉978742405

membalas semua(1)
P粉819937486

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan