mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法
之前项目中需要写一个sql,就是查出某个调研详情中,选A答案,B答案,C答案...F答案的人各有多少人,这个sql也是费了很大的力气才写出来,故记下来,方便以后使用。
其中tbl_research_item为调研详情表,tbl_user_research_item为用户答题详情表
SELECTitem.research_id,item.item_id,item.question,item.question_type,item.option1,item.option2,item.option3,item.option4,item.option5,item.option6,sum(CASE WHEN (LOCATE('A', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption1AnsCnt,sum(CASE WHEN (LOCATE('B', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption2AnsCnt,sum(CASE WHEN (LOCATE('C', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption3AnsCnt,sum(CASE WHEN (LOCATE('D', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption4AnsCnt,sum(CASE WHEN (LOCATE('E', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption5AnsCnt,sum(CASE WHEN (LOCATE('F', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption6AnsCntFROMtbl_research_item itemLEFT JOIN tbl_user_research_item uitem ON (item.research_id=uitem.research_id and item.item_id=uitem.item_id)WHERE item.research_id = '10093'
and question_type != 'input'
GROUP BY item.item_id
由于每道调研的题目有可能为多选,也就是说,uitem.choose_option的值有可能为AB这样的,所以呢,这个sql的思路是当uitem.choose_option中先‘A’的位置大于0,就表示选了A,也就是记为1,否则为0,再将所有用户选了A的数量求和,因此得到了这个调研中这到题选A的总人数option1AnsCnt,其他的以此类推。
在这里顺便介绍一下sql中遇到的LOCATE和CASE WHEN...THEN...ELSE...END两个函数的用法:
1.LOCATE(substr,str) :返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0
例如:select LOCATE('d', 'asdfghj') --->3
2.CASE WHEN...THEN...ELSE...END
例如:
SELECT
case -------------如果
when sex='1' then '男' -------------sex='1',则返回值'男'
when sex='2' then '女' -------------sex='2',则返回值'女'
else '其他' -------------其他的返回'其他’
end -------------结束
这个函数还有另外一种写法:
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
这两种写法都是可以的
mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法相关推荐
- case zhen语句_SQL中的条件判断语句(case when zhen if,ifnull)用法
三.IFNULL(expr1,expr2) 仅适用于mysql 假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2.IFNULL()的返回值是数 ...
- mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法
需求: mysql 查询后根据值的不同进行判断与修改 语法结构: SQL中的条件判断语句(case when zhen)用法 SELECT A.品号,属性, CASE ...
- mysql sum when then_MySQL中group by , sum , case when then 的使用
在我们使用数据库的时候,可能会遇到需要进行统计的情况. 比如需要统计一下,下表中各个年份的胜负场数. 遇到这样的情况,我们应该怎么办呢? 在mysql中我们可以使用group by sum case ...
- MYSQL ifnull 函数 、if判断 、case when、 locate函数
1.MYSQL ifnull 函数 .if判断 .case when. locate (1).IFNULL(expr1,expr2) 如果expr1为空(即NULL),返回expr2,如果expr1 ...
- mysql中begin end中变量定义_DECLARE只能用于BEGIN…END的开头部分定义局部变量,其作用范围只能在该BEGIN…END中。_学小易找答案...
[单选题]表达式select ((6%(7-5))+8)*9-2+(5%2) 的运算结果是______. [判断题]所有变量名@var1.@var2等必须以1个"@"开头,可以由当 ...
- mysql算法函数_mysql中的函数总结
mysql中常用日期时间函数 MySQL服务器中的三种时区设置: ①系统时区---保存在系统变量system_time_zone ②服务器时区---保存在全局系统变量global.time_zone ...
- MySQL执行计划extra中的using index 和 using where using index 的区别
本文出处:http://www.cnblogs.com/wy123/p/7366486.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些 ...
- mysql 1044 4200_关于MySQL绕过授予information_schema中对象时报ERROR 1044(4200)错误
这个问题是微信群中网友关于MySQL权限的讨论,有这么一个业务需求(下面是他的原话): 因为MySQL的很多功能都依赖主键,我想用zabbix用户,来监控业务数据库的所有表,是否都建立了主键. 监控的 ...
- mysql查询字段纯字母_解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题...
解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题 解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题 目录 1.使用场景 2.实现过程及展示结果 2.1.修改字段排序规则为u ...
最新文章
- 让 Spring Boot 启动更快一点
- 利用 Swoole 给应用写个防火墙
- 用HTTP协议连接网络(HttpURLConnection)
- mysql kingshard 扩容_如何用Go打造一个高性能mysql proxy
- iphone简单实例 (字体,弹出窗口) (实例)
- mongodb常用操作语句
- 身为前端工程师,对你来说,你认为最重要的是什么?
- pandas数据处理实践二(排序(sort_index()、sort_values())、连接(Concatenate(连接,串联)和Combine(结合、联合))
- 用Java实现多线程下载
- python3.8入门教程完整版_Python 3.8从入门到精通(视频教学版)
- linux如何设置显示器亮度调节软件,为 Linux 启用色温和亮度调节工具
- UML用例图中三种关系详解
- 关于计算球体体积的Java代码啾咪~
- 淘宝天猫春节照常发货—轻轻松松“淘宝式过年”
- 小米手机:雷布斯的米饭刚下锅
- java中各种O的含义(PO,VO,TO,QO,BO,DAO,DTO,POJO)
- 文章如何在paperpaper查重
- python参数化建模加工图_基于Python的ABAQUS层压板参数化建模
- 【Java多数据源实现教程】实现动态数据源、多数据源切换方式
- 【linux系统】ubuntu18.04蓝牙耳机没有声音
热门文章
- 斯福尼健康采暖,终结健康杀手——雾霾
- 使用百度在网络上搜索资料 在计算机,利用百度搜索资料认识计算机.doc
- 《张艺谋这个人》较真
- 单片机_PWM输出原理详解
- 「数据集」自动驾驶都有什么测试基准?
- 使用postman interceptor拦截浏览器和手机请求
- 光纤收发器指示灯的意义图解
- 和AWS云游四海@姓“诸葛”,名“io”
- 攻防世界 WEB leaking
- Android各种大内存脚本对比(app2sd,a2sd,a2sd+,d2sd,CronMod,Mound2SD)