CASE
WHEN
字段
1
IS
NOT
NULL
THEN
字段
1
ELSE
'合计'
end
字段
1
,
COUNT
(
统计字段
)
FROM
`
表名
`
GROUP
BY
字段
1
WITH ROLLUP
方法一:SELECT coalesce(字段1,'总计'), COUNT(统计字段)FROM '表名' GROUP BY 字段1WITH ROLLUP方法二:SELECT CASE WHEN 字段1 IS NOT NULL THEN 字段1 ELSE '合计' end 字段1, COUNT(统计字段) FROM `表名` GROUP BY 字段1WITH ROLLUP...
WITH ROLLUP:WITH POLLUP关键字用来在所有记录的
最后
加上一条记录,这条记录是上面所有记录的总和,即统计记录数量。也就是在group分组字段的基础上再进行统计数据。
使用:GROUP BY 分组与 WITH ROLLUP使用
每天一早到公司,第一件事就是打开各种报表,查看平台运行情况。到了周末,睡完懒觉还是得爬起床远程回公司看报表数据。于是在周末的时候,将娃哄睡之后,开始着手写一下统计sql,定期执行后将结果汇总推送到企业微信。
问题就出现在“汇总”这个事。众所周知 sql的group by 能做分组统计,但是分组后还得再执行一次sql将结果汇总一遍,才能将分组统计结果加起来。如下面的SQL:
select status, count(1)
from action_history
where create_
2)在
最后
一行
写“
合计
”描述
- 第一步:
利用with rollup 函数:with rollup函数会将通常会与group by联合使用,with rollup将不是group by中的所有项进行应有的计算,数值类型进行相加计算。
select ear_label as "id",count(*) as "总数",update_time
FROM rpm_reg_prgancyregistry
WHERE prga
使用连接(JOIN)来代替子查询(Sub-Queries)
MySQL
从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:
DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成
-- ----------------------------
-- Table structure for tbl_radar_statisticsdata
-- ----------------------------
DROP TABLE IF EXISTS `tbl_radar_statisticsdata`;
CREATE TABLE `tbl_radar_statis...
可以使用以下 SQL 语句来在
MySQL
中插入
最后
一行
数据:
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
其中,table_name 是你要插入数据的表名,column1、column2、column3 是表中的列名,value1、value2、value3 是你要插入的数据值。如果你想在
最后
一行
插入数据,可以使用以下语句:
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ORDER BY id DESC LIMIT 1;
其中,id 是表中的主键列名,DESC 表示按照降序排列,LIMIT 1 表示只返回
一行
数据,即
最后
一行
数据。