1. 代码

SELECT
a.id,
a.activity_name,
(
CASE
WHEN a.activity_end_time > now() THEN
'参与中'
ELSE
(
CASE
WHEN (
a.activity_doubt <> '*'
AND a.activity_doubt < c.doubt
)
OR (
a.activity_praise <> '*'
AND a.activity_praise > c.praise * 100
) THEN
'未达标'
ELSE
'已达标'
END
)
END
) AS state,
c.driver_id,
c.driver_phone,
c.driver_name,
c.count
FROM
(
SELECT
id,
activity_name,
activity_end_time,
SUBSTRING_INDEX(
driver_award_condition,
"-",
1
) AS activity_doubt,
SUBSTRING_INDEX(
driver_award_condition,
"-",
- 1
) AS activity_praise
FROM
car_biz_numprize_base AS b
WHERE
1 = 1
AND activity_name LIKE concat(concat('%', '数据'), '%')
AND id = 1
AND NOT (
(
activity_start_time > '2017-10-27 17:16:00'
)
OR (
activity_end_time < '2017-10-27 17:10:00'
)
)
) AS a
INNER JOIN (
SELECT
i.driver_id,
i.driver_phone,
i.driver_name,
i.numprize_base_id,
count(order_no) AS count,
sum(order_doubt) AS doubt,
sum(order_praise) / count(order_no) AS praise
FROM
car_biz_numprize_order_item i
WHERE
1 = 1
AND driver_id = 1000063
GROUP BY
i.driver_id,
i.numprize_base_id
) AS c ON a.id = c.numprize_base_id
HAVING
state = '未达标' order by a.created_time desc, c.driver_id asc
LIMIT 0,
10

2. 需求的来源

2.1 符合活动条件的订单 达标情况查询 如下页面所示 2-1

2.2  活动相关的表

活动表2-2

符合条件订单表2-3

2.1图中 活动参与状态的查询条件 是在这两个表中不存在的字段

需从活动表2-2中 获取 driver_award_condition列 并分割条件 然后对 2-1表进行运算 然后再帅选

2.4 如果在mybatis中 拼sql 小于 大于号 放在 <![ CDATA [>]]>中

SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 1)), ",", 1);    #aa  
SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 2)), ",", 1);    #bb        
SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 3)), ",", 1);    #cc
SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX("aa,bb,cc,dd", ",", 4)), ",", 1);    #dd

3.总结

复杂的sql 是一步一步写出来的

mysql case when & concat & SUBSTRING_INDEX & not & having 使用的小case的更多相关文章

  1. mysql中的concat,concat_ws(),group_concat()

    mysql中的concat,concat_ws(),group_concat() 说明: 本文中使用的例子均在下面的数据库表tt2下执行:     一.concat()函数 1.功能:将多个字符串连接 ...

  2. [转]MySQL中函数CONCAT及GROUP_CONCAT

    一.CONCAT()函数 CONCAT()函数用于将多个字符串连接成一个字符串. 使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为 +-- ...

  3. Mysql学习笔记—concat以及group_concat的用法(转载)

    本文中使用的例子均在下面的数据库表tt2下执行: 一.concat()函数 1.功能:将多个字符串连接成一个字符串. 2.语法:concat(str1, str2,...) 返回结果为连接参数产生的字 ...

  4. 使用Mysql中的concat函数或正则匹配来快速批量生成用于执行的sql语句

    背景介绍 今天需要给一张表里面补数据,需要按照行的维度进行update,如果是个别数据那么直接写update语句就可以了,但是场景要求的是将整表的数据进行update,要实现这个需求就不能只靠蛮力了, ...

  5. unittest自定义运行全量case or 运行指定的单个或多个case

    import unittest import os from case.zufang.test_api_area_rentProlist import Zf1 case_path = os.path. ...

  6. 计算mysql中某个字段某字符出现的次数,case when 和 截取字符的用法

    select LENGTH(type) - LENGTH(replace(type,'_','')) as counts from sa_log_olap where type like 'XX_XX ...

  7. mysql GROUP_CONCAT+ GROUP BY + substring_index获取分组的前几名

    mysql方法来源于:http://www.cnblogs.com/jjcc/p/5896588.html ###在网上看到一篇,非常赞的方法### 比如说要获取班级的前3名,mysql就可以用GRO ...

  8. MySQL中函数CONCAT及GROUP_CONCAT

    一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+ ...

  9. mysql中使用concat例子

    数据库为mysql,需要把旧门店记录的note字段的资料追加到新门店的note资料的后面 旧记录id为old_terminal_id,新记录id为new_terminal_id,提供格式如下:

随机推荐

  1. [redis] 数据特性简单实验

    位图 由bit位组成的数组,实际的底层数组类型是字符串,而字符串的本质是二进制大对象,所以将其视作位图,位图存储的是boolean指,一定程度上可以减少存储空间. -- 设置位图指定偏移量的比特位的值 ...

  2. asp 程序 转 php

    常年做web的,工作需要,可能有的时候需要将asp代码批量转换成php,最近发现一个小东西很不错,虽不能100%转换(毕竟是程序),但是大大提高了工作效率 Asp2Php是一个可以将ASP转化成PHP ...

  3. Django之ContentTypes

    ContentTypes是什么? ContentTypes是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建了新的mode ...

  4. 获取LAMP与LNMP的编译参数

    1.查看nginx的编译参数[root@LNMP ~]# /application/nginx/sbin/nginx -Vnginx version: nginx/1.6.3built by gcc ...

  5. 【Python】Excel数据处理

    1.环境准备 > python2.7 > xlrd,xlwt模块下载与安装,前者用来读取excel文件,后者用来写入excel文件 2.实战案例 案例场景: > excel1中包含某 ...

  6. 解决视图状态消息验证代码 (MAC) 错误

    https://blog.csdn.net/bingtingabc/article/details/49148745 2015年10月15日 10:05:56 bingtingabc 阅读数:3397 ...

  7. D-Link DIR-645 信息泄露漏洞

    D-Link DIR-645 getcfg.php 文件由于过滤不严格导致信息泄露漏洞. $SERVICE_COUNT = cut_count($_POST["SERVICES"] ...

  8. 记.net 遇到的几个bug

    这两个bug都是查了挺久才查到的,随手记是个好习惯. 1.public static CultureInfo GetCultureInfo(string name); 方法,传参错误时,某些操作系统环 ...

  9. SpringBoot + Spring MVC国际化使用示例

    项目中需要显示中英文两种语言,所以需要对显示的内容进行国际化,如下是一个示例程序. 程序文件结构,如下图,后面详细列出各文件的代码. 1. 编写maven的pom.xml文件,如下: <proj ...

  10. 2016424王启元 Exp5 msf基础应用

    成功实现的有: 一个主动攻击实践,ms08_067 一个针对浏览器的攻击,ms11_050 一个针对客户端的攻击,Adobe(在实现这一步骤的时候有点小瑕疵,就是Adobe的版本问题换了三四个才成功) ...