如何在MySQL中使用Group BY的SUM函数?

How to use the SUM function with Group BY in MySQL?

我有一个 SQL 声明 returns 一些记录取决于一些给定的变量。

查询:

SELECT
     country
    ,(MAX(d_views) - MIN(d_views)) AS viewz 
FROM mv_data
WHERE add_date BETWEEN '2022-01-22' AND '2022-01-22' 
GROUP BY title
ORDER BY viewz DESC;

输出:

country viewz
NG 14735
NG 12494
GH 6099
GH 5181
GH 3381
NG 3293
GH 2288
NG 169

我要找的是: 要使用 SUM() 函数根据国家/地区汇总所有 viewz,例如:

country viewz
NG 30691
GH 16949

这就是我所做的:

SELECT
     country
    ,SUM(MAX(d_views) - MIN(d_views)) AS viewz 
FROM mv_data
WHERE add_date BETWEEN '2022-01-26' AND '2022-01-26'
GROUP BY title
ORDER BY viewz DESC;

但是我收到这个错误:

#1111 - Invalid use of group function

我也试过 GROUP BY country 没有 SUM() 函数,结果不正确:

查询:

SELECT
     country
    ,(MAX(d_views) - MIN(d_views)) AS viewz 
FROM mv_data
WHERE add_date BETWEEN '2022-01-26' AND '2022-01-26'
GROUP BY country
ORDER BY viewz DESC;

输出:

country viewz
NG 4918377
GH 8185474

我做错了什么?

注意:d_views 是我的 table 中的一个字段。根据给定的日期,我们有一个最小值和一个最大值。

使用第一个作为第二个的子查询

SELECT
   country
   SUM(viewz) as viewz
FROM (SELECT
     country
    ,MAX(d_views) - MIN(d_views) AS viewz 
FROM mv_data
WHERE add_date BETWEEN '2022-01-26' AND '2022-01-26'
GROUP BY title) t1
GROUP BY country
ORDER BY viewz DESC;

如果您想使用 SUM() 函数 sum-up 根据他们所在国家/地区的所有视图,只需使用以下命令;

SELECT
     country
    ,SUM(d_view) AS viewz 
FROM mv_data
WHERE add_date BETWEEN '2022-01-26' AND '2022-01-26'
GROUP BY country
ORDER BY viewz DESC;