Mysql:查询每个⽉下的数据,根据状态或者年份的sql语句
------------吾亦⽆他,唯⼿熟尔,谦卑若愚,好学若饥-------------
本次的MySQL开篇记录了⼀道⾯试题,我给其扩展⼀下
这⾯试题它难点在什么地⽅,不外乎是操作⽉份和将其展⽰的格式问题,他要查每个⽉份下的状态,并将其横向展⽰
给本次博客列⼀个篇章,我要讲什么:
1.根据⼀个属性分组查每个⽉下数据的记录的个数
2.查每个⽉数据的记录的个数,根据年份分组
3.根据⼀个属性分组,查询每个⽉下某⼀属性的值的总和
4.查询每个⽉下某个属性的值的总和,根据年份分组
我给⼀个测试表,合起来了,需要⽤来测试的⾃⼰拿,就是上⾯的⾯试题的
DROP TABLE IF EXISTS `demo003`;
CREATE TABLE `demo003` (
`question_code` varchar(225) DEFAULT NULL,
`flowcode` int(225) DEFAULT NULL,
`flowtype` varchar(225) DEFAULT NULL,
`duty_dept_name` varchar(225) DEFAULT NULL,
`create_person_name` varchar(225) DEFAULT NULL,
`create_time` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `demo003` */
insert into `demo003`(`question_code`,`flowcode`,`flowtype`,`duty_dept_name`,`create_person_name`,`create_time`) values ('171026131',1,'待整改','感染科','刘某某','2017-08-17 16:02:06'),('171026132',1,'待整改','感染科','刘某某','2017-08-17 16:02:06上⾯⾯试题的mysql表的sql脚本
1.⾸先我讲的是第⼀种,,根据某个属性分组,查每个⽉下数据的个数,就是我说的那道⾯试题的结果的写法
我把⾯试题答案合起来,把第⼀个种sql的写法格式展开,你们想看答案的,⾃⼰打开合起来的
SELECT flowcode,
SUM(CASE WHEN MONTH(create_time) =1 THEN 1 ELSE 0 END) ⼀⽉,
SUM(CASE WHEN MONTH(create_time) =2 THEN 1 ELSE 0 END) ⼆⽉,
SUM(CASE WHEN MONTH(create_time) =3 THEN 1 ELSE 0 END) 三⽉,
SUM(CASE WHEN MONTH(create_time) =4 THEN 1 ELSE 0 END) 四⽉,
SUM(CASE WHEN MONTH(create_time) =5 THEN 1 ELSE 0 END) 五⽉,
SUM(CASE WHEN MONTH(create_time) =6 THEN 1 ELSE 0 END) 六⽉,
SUM(CASE WHEN MONTH(create_time) =7 THEN 1 ELSE 0 END) 七⽉,
SUM(CASE WHEN MONTH(create_time) =8 THEN 1 ELSE 0 END) ⼋⽉,
SUM(CASE WHEN MONTH(create_time) =9 THEN 1 ELSE 0 END) 九⽉,
aspen plus 入门(v11版本SUM(CASE WHEN MONTH(create_time) =10 THEN 1 ELSE 0 END) ⼗⽉,
SUM(CASE WHEN MONTH(create_time) =11 THEN 1 ELSE 0 END) ⼗⼀⽉,
SUM(CASE WHEN MONTH(create_time) =12 THEN 1 ELSE 0 END) ⼗⼆⽉,
COUNT(flowcode) 合计tabletennis怎么记忆
FROM demo003
GROUP BY flowcode
⾯试题答案
他的书写格式为
SELECT根据分组的属性,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =1THEN1ELSE0END) ⼀⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =2THEN1ELSE0END) ⼆⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =3THEN1ELSE0END) 三⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =4THEN1ELSE0END) 四⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =5THEN1ELSE0END) 五⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =6THEN1ELSE0END) 六⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =7THEN1ELSE0END) 七⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =8THEN1ELSE0END) ⼋⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =9THEN1ELSE0END) 九⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =10THEN1ELSE0END) ⼗⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =11THEN1ELSE0END) ⼗⼀⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =12THEN1ELSE0END) ⼗⼆⽉,
COUNT(*) 合计
FROM表名
GROUP BY根据分组的属性
>>>>>>>>>##33
#Then后⾯的⼀定是1,因为是查询的是记录的个数,和不是查询记录的值的总和
2.查每个⽉数据的记录的个数,根据年份分组
格式:
mysql面试题sqlSELECT YEAR(表中记录的⽇期的属性) 年度,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =1THEN1ELSE0END) ⼀⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =2THEN1ELSE0END) ⼆⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =3THEN1ELSE0END) 三⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =4THEN1ELSE0END) 四⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =5THEN1ELSE0END) 五⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =6THEN1ELSE0END) 六⽉,
电影网站网页设计SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =7THEN1ELSE0END) 七⽉,
123456构造哈夫曼树SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =8THEN1ELSE0END) ⼋⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =9THEN1ELSE0END) 九⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =10THEN1ELSE0END) ⼗⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =11THEN1ELSE0END) ⼗⼀⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =12THEN1ELSE0END) ⼗⼆⽉,
COUNT(*) 合计
FROM表名
queue positionGROUP BY YEAR(表中记录的⽇期的属性)
3.根据⼀个属性分组,查询每个⽉下某⼀属性的值的总和,⼀般⽤于统计钱的数量
格式:
SELECT根据分组的属性,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =1THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼀⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =2THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼆⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =3THEN要计算总和的列的属性,⽐如钱ELSE0END) 三⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =4THEN要计算总和的列的属性,⽐如钱ELSE0END) 四⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =5THEN要计算总和的列的属性,⽐如钱ELSE0END) 五⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =6THEN要计算总和的列的属性,⽐如钱ELSE0END) 六⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =7THEN要计算总和的列的属性,⽐如钱ELSE0END) 七⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =8THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼋⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =9THEN要计算总和的列的属性,⽐如钱ELSE0END) 九⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =
10THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =11THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⼀⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =12THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⼆⽉, SUM(要计算总和的列的属性,⽐如钱) 合计
FROM表名
GROUP BY根据分组的属性
4.查询每个⽉下某个属性的值的总和,根据年份分组
SELECT YEAR(表中记录的⽇期的属性) 年度,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =1THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼀⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =2THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼆⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =3THEN要计算总和的列的属性,⽐如钱ELSE0END) 三⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =4THEN要计算总和的列的属性,⽐如钱ELSE0END) 四⽉,
SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =5THEN要计算总和的列的属性,⽐如钱ELSE0
END) 五⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =6THEN要计算总和的列的属性,⽐如钱ELSE0END) 六⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =7THEN要计算总和的列的属性,⽐如钱ELSE0END) 七⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =8THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼋⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =9THEN要计算总和的列的属性,⽐如钱ELSE0END) 九⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =10THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =11THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⼀⽉, SUM(CASE WHEN MONTH(表中记录的⽇期的属性) =12THEN要计算总和的列的属性,⽐如钱ELSE0END) ⼗⼆⽉, SUM(要计算总和的列的属性,⽐如钱) 合计
FROM表名
GROUP BY YEAR(表中记录的⽇期的属性) 年度,
本章完,祝愿各位攻城狮都能更进百步
转载请注明出处:原作者:晨曦Dawn
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论