复杂SQL需求:

1.查询productCode in (1, 2, 4, 5, 7)五种

2.5种产品必须固定显示,优先显示procuct_status='1'在售产品,在售产品卖完则售罄产品顶上来,即每种产品必须显示一条,不可空挡

3.在售取时间最早的一条,售罄取时间最晚的一条

SELECT
procuct_starttime,
procuct_starttime AS "product_saletime",
product_no,
o.product_code,
product_name,
marketing_type,
pay_type,
is_transfer,
close_period,
procuct_status,
product_recommend,
trade_type,
IFNULL(
(
SELECT
t.star_img
FROM
tb_crm_activity_product_info f,
tb_crm_activity_resource_info g,
tb_crm_star_information t
WHERE
product_no = f.product_id
AND f.acti_id = g.acti_id
AND g.resource_id = t.id
),
'http://www.gougou.com.cn'
) url,
IFNULL(
(
SELECT
COUNT(*)
FROM
tb_customer_order co
WHERE
co.product_no = o.product_no
GROUP BY
co.product_no
),
0
) buyCount,
IFNULL(procuct_aroe, 0) annualizedRate,
product_addonrate,
IFNULL(procuct_min_amount, 0) minPurchaseAmount,
procuct_amount financingAmount,
IFNULL(product_amount_buy, 0) currentAmount,
FORMAT(
IFNULL(product_amount_buy, 0) * 100 / procuct_amount,
2
) amountScale,
CASE
WHEN FORMAT(
IFNULL(product_amount_buy, 0) * 100 / procuct_amount,
2
) >= 100 THEN
'1'
ELSE
'0'
END eee,
procuct_type productType,
procuct_day productDay,
procuct_summary productSummary,
CASE
WHEN product_amount_buy >= procuct_amount THEN
1
ELSE
0
END oindex, IF (
o.product_recommend = 'Y',
1,
0
) ooo
FROM
(
SELECT
pt.*
FROM
tb_product_type pt
INNER JOIN (
SELECT
MAX(product_no) product_no
FROM
tb_product_type a
INNER JOIN (
SELECT
product_code,
MIN(procuct_starttime) procuct_starttime
FROM
tb_product_type
WHERE
marketing_type = '1'
AND procuct_status = '1'
AND product_amount_buy < procuct_amount
AND product_code IN (1, 2, 4, 5, 7)
GROUP BY
product_code
) b ON a.product_code = b.product_code
AND a.procuct_starttime = b.procuct_starttime
GROUP BY
a.product_code
UNION ALL
SELECT
MAX(product_no) product_no
FROM
tb_product_type a
INNER JOIN (
SELECT
p1.product_code,
MAX(procuct_starttime) procuct_starttime
FROM
tb_product_type p1
WHERE
NOT EXISTS (
SELECT
1
FROM
tb_product_type p2
WHERE
marketing_type = '1'
AND procuct_status = '1'
AND product_amount_buy < procuct_amount
AND p1.product_code = p2.product_code
)
AND marketing_type = '1'
AND product_code IN (1, 2, 4, 5, 7)
GROUP BY
product_code
) b ON a.product_code = b.product_code
AND a.procuct_starttime = b.procuct_starttime
GROUP BY
a.product_code
) pt2 ON pt.product_no = pt2.product_no
) o
ORDER BY
ooo DESC,
product_code ASC;

  

复杂SQL查询实例-5种普惠产品必须显示...的更多相关文章

  1. django中使用原生的sql查询实例

    在app文件夹下创建database_operations.py文件,写如下内容: import pymysql from 项目名.settings import DATABASES class Da ...

  2. SQL查询的几种方式

    /* 左连接 left join 或者 left outer join */ /* 左连接 Table_A表数据全部显示,Table_B根据条件匹配Table_A 匹配上显示,否则显示NULL */ ...

  3. SQL中常用模糊查询的四种匹配模式&&正则表达式

    执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...

  4. Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

    1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...

  5. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

  6. MySQL中优化sql语句查询常用的种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  7. SqlSugar-执行Sql语句查询实例

    使用SqlSugar执行sql语句 1.简单查询 SqlSugarClient db = SugarContext.GetInstance(); //执行sql语句,处理 //1.执行sql,转成li ...

  8. Mysql常用30种SQL查询语句优化方法

    出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...

  9. MySQL 常用30种SQL查询语句优化方法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

随机推荐

  1. Foundation Kit介绍

    Cocoa实际上是由许多个不同的框架组成的,其中最常用于桌面端(OS X)应用程序的是Foundation和Application Kit.它包含了所有的用户界面对象和高级类.如果打算开发ios平台上 ...

  2. 一道面试题引发的对javascript类型转换的思考

    最近群里有人发了下面这题:实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 对 ...

  3. 9 个用于移动APP开发的顶级 JavaScript 框架

    顶级 Java 框架 对于Web开发而言,Java是一个有前途的编程语言,并且在不久的将来它将依然在这个领域大放光彩.Java在移动app开发上也有同样的影响吗?让我们一起来看看ValueCoders ...

  4. debian/ubuntu部署java应用小结

    近期改的Java应用即将部署,为了强强联合,需要把Java应用部署到linux,我们选择了debian系列.小结一下部署的大致过程,如下: Ubuntu已经默认安装了OpenJDK,但还是比较倾向官方 ...

  5. 【JS】JavaScript中的参数传递

    ECMAScript中所有函数的参数都是按值传递的,简单讲就是函数外部的值 复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样.切记访问变量有按值访问和按引用访问,而参数只能按值传递. 在向 ...

  6. Raft算法,从学习到忘记

    Raft算法,从学习到忘记 --Raft算法阅读笔记. --Github 概述 说到分布式一致性算法,可能大多数人的第一反应是paxos算法.但是paxos算法一直以来都被认为是难以理解,难以实现.S ...

  7. 九度OJ题目1080:进制转换(java)使用BigInteger进行进制转换

    题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成 ...

  8. 485. Max Consecutive Ones

    题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...

  9. Maven使用说明

    maven的作用. Maven 是一个项目管理和构建自动化工具.可以方便我们导入jar包. maven的安装. 要想安装maven,首先你需要安装jdk,并且配置jdk环境变量.右键点击计算机,选择属 ...

  10. js 判断是否为空对象、空数组

    当需要判断参数是否为空时,总希望 js 能够提供原生的判断方法,可惜并没有,只能自己封装了. function isEmpty(obj) { // 检验 undefined 和 null if(!ob ...