1.SQL查询今天、昨天、n天内、第n天的数据, 本周,本月,上一个月的数据:
https://www.cnblogs.com/hyhyhy/articles/9518063.html
2.SQL 标量函数-----日期函数 day() 、month()、year():
https://www.cnblogs.com/accumulater/p/7218531.html
3.Mysql—— 内连接、左连接、右连接以及全连接查询
https://blog.csdn.net/zjt980452483/article/details/82945663
datesub–进行运算时,时分秒也会参与运算
select DATE_FORMAT((DATE_SUB(NOW(),INTERVAL 5 MONTH)),'%Y-%m-01 00:00:00' ) from dual
可以用这种方法,实现从1号开始统计,而不是距离当前5个月。
DATEDIFF() 函数返回两个日期之间的时间,实践发现,时分秒不参与运算
计算天数:
DATEDIFF(tft.create_time,NOW())<=0 AND DATEDIFF(tft.create_time,NOW())>-2
计算月数:
tft.create_time BETWEEN DATE_FORMAT((DATE_SUB(NOW(),INTERVAL 1 MONTH)),'%Y-%m-01 00:00:00')and NOW()
4.一条sql语句返回多个count值
https://bbs.csdn.net/topics/390409845
https://blog.csdn.net/weixin_44253425/article/details/88837966
第一种:亲测可以
select date(create_time) as dateTime,count(IF(status!=2,true,null)) as count1,count(IF(status=2,true,null)) as count2
from sur_answer where survey_id = 526 group by date(create_time) order by create_time
第二种:这种还没实际操作
select count(case when type='01' then 1 else null end) aCount,
count(case when type='02' then 1 else null end) bCount from tblA
5.统计百分比:
----SELECT CONCAT(ROUND(20/500*100,2),'%');
---SELECT CONCAT(TRUNCATE(2*100,2),'%')
CONCAT(ROUND(COUNT(*)/7816*100,2),'%') as cc--亲测有效
6.语句里面使用case语句根据判断实现多个返回结果值
https://www.cnblogs.com/HDK2016/p/8134802.html
最后一章小节:
七、小结
select 与 case结合使用最大的好处有两点,一是在显示查询结果时可以灵活的组织格式,二是有效避免了多次对同一个表或几个表的访问。
下面举个简单的例子来说明。例如表 students(id, name ,birthday, sex, grade),要求按每个年级统计男生和女生的数量各是多少,统计结果的表头为,年级,男生数量,女生数量。如果不用select case when,为了将男女数量并列显示,统计起来非常麻烦,先确定年级信息,再根据年级取男生数和女生数,而且很容易出错。
用select case when写法如下:
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students
GROUP BY grade;
亲自实践结果代码:
select CREATE_DATE as 时间,tfc.code_value_name as 业务类型,
CASE
WHEN tfc.code_value_id ='1001' then CONCAT(ROUND(cc/100*100,2),'%')
WHEN tfc.code_value_id ='1002' then CONCAT(ROUND(cc/100*100,2),'%')
WHEN tfc.code_value_id ='1003' then CONCAT(ROUND(cc/100*100,2),'%')
ELSE NULL
END 百分比
from XXXX
显示结果:
另外一种是:这个不如上面统计的格式好
select CREATE_DATE as 时间,tfc.code_value_name as 业务类型,
(case when tfc.code_value_id ='1001' then CONCAT(ROUND(cc/100*100,2),'%')ELSE NULL END) AS 宽带百分比,
(case when tfc.code_value_id ='1002' then CONCAT(ROUND(cc/100*100,2),'%')ELSE NULL END) AS 融合百分比,
(case when tfc.code_value_id ='1003' then CONCAT(ROUND(cc/100*100,2),'%')ELSE NULL END) AS 移网百分比
from XXX