如何在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;
我有一个 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;