Mysql 对行进行计数和求和
Mysql Count and Sum Rows
我有一个 mysql 查询(由 sagi 创建):-
SELECT 'blr' AS Location, COUNT(*) AS playCnt, (select count(*) from blr_skip WHERE blr_skip_dt like '%2016-03-20%') as skipCnt FROM blr_play WHERE blr_play_dt like '%2016-03-20%' UNION SELECT 'chen' AS Location, COUNT(*) AS playCnt, (select count(*) from chen_skip WHERE chen_skip_dt like '%2016-03-20%') as skipCnt FROM chen_play WHERE chen_play_dt like '%2016-03-20%';
输出如下:-
+----------+---------+---------+
| Location | playCnt | skipCnt |
+----------+---------+---------+
| blr | 25 | 8 |
| chen | 12 | 1 |
+----------+---------+---------+
我想在列的末尾再添加一行总计,如下所示:-
+----------+---------+---------+
| Location | playCnt | skipCnt |
+----------+---------+---------+
| blr | 25 | 8 |
| chen | 12 | 1 |
+----------+---------+---------+
|Total | 37 | 9 |
+----------+---------+---------+
试试这个:
SELECT
IFNULL(Location, 'Total') AS Location,
SUM(playCnt) AS playCnt,
SUM(skipCnt) AS playCnt
FROM
(
SELECT 'blr' AS Location, COUNT(*) AS playCnt, (select count(*) from blr_skip WHERE blr_skip_dt like '%2016-03-20%') as skipCnt
FROM blr_play
WHERE blr_play_dt like '%2016-03-20%'
UNION
SELECT 'chen' AS Location, COUNT(*) AS playCnt, (select count(*) from chen_skip WHERE chen_skip_dt like '%2016-03-20%') as skipCnt
FROM chen_play
WHERE chen_play_dt like '%2016-03-20%'
) t1
GROUP BY Location WITH ROLLUP;
我有一个 mysql 查询(由 sagi 创建):-
SELECT 'blr' AS Location, COUNT(*) AS playCnt, (select count(*) from blr_skip WHERE blr_skip_dt like '%2016-03-20%') as skipCnt FROM blr_play WHERE blr_play_dt like '%2016-03-20%' UNION SELECT 'chen' AS Location, COUNT(*) AS playCnt, (select count(*) from chen_skip WHERE chen_skip_dt like '%2016-03-20%') as skipCnt FROM chen_play WHERE chen_play_dt like '%2016-03-20%';
输出如下:-
+----------+---------+---------+
| Location | playCnt | skipCnt |
+----------+---------+---------+
| blr | 25 | 8 |
| chen | 12 | 1 |
+----------+---------+---------+
我想在列的末尾再添加一行总计,如下所示:-
+----------+---------+---------+
| Location | playCnt | skipCnt |
+----------+---------+---------+
| blr | 25 | 8 |
| chen | 12 | 1 |
+----------+---------+---------+
|Total | 37 | 9 |
+----------+---------+---------+
试试这个:
SELECT
IFNULL(Location, 'Total') AS Location,
SUM(playCnt) AS playCnt,
SUM(skipCnt) AS playCnt
FROM
(
SELECT 'blr' AS Location, COUNT(*) AS playCnt, (select count(*) from blr_skip WHERE blr_skip_dt like '%2016-03-20%') as skipCnt
FROM blr_play
WHERE blr_play_dt like '%2016-03-20%'
UNION
SELECT 'chen' AS Location, COUNT(*) AS playCnt, (select count(*) from chen_skip WHERE chen_skip_dt like '%2016-03-20%') as skipCnt
FROM chen_play
WHERE chen_play_dt like '%2016-03-20%'
) t1
GROUP BY Location WITH ROLLUP;