------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

本次的MySQL开篇记录了一道面试题,我给其扩展一下

这面试题它难点在什么地方,不外乎是操作月份和将其展示的格式问题,他要查每个月份下的状态,并将其横向展示

给本次博客列一个篇章,我要讲什么:

1.根据一个属性分组查每个月下数据的记录的个数

2.查每个月数据的记录的个数,根据年份分组

3.根据一个属性分组,查询每个月下某一属性的值的总和

4.查询每个月下某个属性的值的总和,根据年份分组

我给一个测试表,合起来了,需要用来测试的自己拿,就是上面的面试题的

DROP TABLE IF EXISTS `demo003`;

CREATE TABLE `demo003` (
`question_code` varchar() DEFAULT NULL,
`flowcode` int() DEFAULT NULL,
`flowtype` varchar() DEFAULT NULL,
`duty_dept_name` varchar() DEFAULT NULL,
`create_person_name` varchar() 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 ('',,'待整改','感染科','刘某某','2017-08-17 16:02:06'),('',,'待整改','感染科','刘某某','2017-08-17 16:02:06'),('',,'待认领','保卫处','测试','2018-05-04 16:03:18'),('',,'待认领','保卫处','测试','2018-04-05 16:04:04'),('',,'待认领','保卫处','测试','2018-02-22 16:04:31'),('',,'待整改','保卫处','测试','2018-03-09 16:05:10'),('',,'待整改','总务处','测试','2017-11-29 16:05:52'),('',,'已关闭','总务处','测试','2017-10-18 16:06:18'),('',,'待整改','总务处','测试','2017-10-11 16:07:05'),('',,'待整改','总务处','测试','2018-02-28 16:07:39'),('',,'待整改','保卫处','测试','2018-02-13 16:08:12');

上面面试题的mysql表的sql脚本

1.首先我讲的是第一种,,根据某个属性分组,查每个月下数据的个数,就是我说的那道面试题的结果的写法

我把面试题答案合起来,把第一个种sql的写法格式展开,你们想看答案的,自己打开合起来的

SELECT flowcode,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 一月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 二月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 三月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 四月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 五月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 六月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 七月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 八月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 九月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 十月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 十一月,
SUM(CASE WHEN MONTH(create_time) = THEN ELSE END) 十二月,
COUNT(flowcode) 合计
FROM demo003
GROUP BY flowcode

面试题答案

他的书写格式为

SELECT 根据分组的属性,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 1 ELSE 0 END) 一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 1 ELSE 0 END) 二月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 1 ELSE 0 END) 三月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 1 ELSE 0 END) 四月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 1 ELSE 0 END) 五月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 1 ELSE 0 END) 六月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 1 ELSE 0 END) 七月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 1 ELSE 0 END) 八月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 1 ELSE 0 END) 九月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 1 ELSE 0 END) 十月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 1 ELSE 0 END) 十一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 1 ELSE 0 END) 十二月,
COUNT(*) 合计
FROM 表名
GROUP BY 根据分组的属性 ###############################################33
#Then后面的一定是1,因为是查询的是记录的个数,和不是查询 记录的值的总和

2.查每个月数据的记录的个数,根据年份分组

格式:

SELECT YEAR(表中记录的日期的属性) 年度,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 1 ELSE 0 END) 一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 1 ELSE 0 END) 二月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 1 ELSE 0 END) 三月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 1 ELSE 0 END) 四月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 1 ELSE 0 END) 五月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 1 ELSE 0 END) 六月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 1 ELSE 0 END) 七月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 1 ELSE 0 END) 八月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 1 ELSE 0 END) 九月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 1 ELSE 0 END) 十月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 1 ELSE 0 END) 十一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 1 ELSE 0 END) 十二月,
COUNT(*) 合计
FROM 表名
GROUP BY YEAR(表中记录的日期的属性)

3.根据一个属性分组,查询每个月下某一属性的值的总和,一般用于统计钱的数量

格式:

SELECT 根据分组的属性,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 二月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 三月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 四月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 五月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 六月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 七月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 八月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 九月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十二月,
SUM(要计算总和的列的属性,比如钱) 合计
FROM 表名
GROUP BY 根据分组的属性

4.查询每个月下某个属性的值的总和,根据年份分组

SELECT YEAR(表中记录的日期的属性) 年度,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =1 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =2 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 二月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =3 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 三月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =4 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 四月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =5 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 五月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =6 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 六月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =7 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 七月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =8 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 八月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =9 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 九月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =10 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =11 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十一月,
SUM(CASE WHEN MONTH(表中记录的日期的属性) =12 THEN 要计算总和的列的属性,比如钱 ELSE 0 END) 十二月,
SUM(要计算总和的列的属性,比如钱) 合计
FROM 表名
GROUP BY YEAR(表中记录的日期的属性) 年度,

本章完,祝愿各位攻城狮都能更进百步

转载请注明出处:原作者:晨曦Dawn

原博客地址:http://www.cnblogs.com/DawnCHENXI/p/8781684.html

最新文章

  1. css content 如何自定义生成图标?
  2. C#中WinForm程序退出方法技巧总结(转)
  3. 写给已有编程经验的 Python 初学者的总结
  4. ERROR 23 (HY000) at line 29963: Out of resources when opening file
  5. 【HtmlParser】HtmlParser使用
  6. win7家庭版升级旗舰版
  7. 原生js判断是否有某个class,如果有就删掉,没有加上
  8. 排序功能实现 jQuery实现排序 上移 下移
  9. 跨域访问之JSONP
  10. xUtils使用详细介绍
  11. iOS 内存泄漏排查以及处理
  12. win7彻底卸载iis
  13. JS中清空字符串前后空格
  14. Spring Cloud,Dubbo及HSF对比
  15. 02_计算机网络的OSI七层(应表会传网数物)
  16. 自然语言处理中的N-Gram模型
  17. unigui日志
  18. IDEA中部署tomcat,运行JSP文件,编译后的JSP文件存放地点总结
  19. HihoCoder - 1801 :剪切字符串 (置换与逆序对)
  20. BZOJ 2761 不重复数字 set

热门文章

  1. 【64】Spring mvc详解
  2. Java-ServletContextListener
  3. C语言颜色转换宏
  4. ANDROID 中设计模式的采用--创建型模式
  5. Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Procedures)
  6. gradle构建android项目详解
  7. Dll的编写 在unity中加载
  8. OpenCV——PS 图层混合算法 (二)
  9. ethtool确定网卡对应的物理网口
  10. 《转》Xcode 6 正式版如何创建一个Empty Application