复杂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. struts2中Action到底是什么,怎么理解

    struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...

  2. js 封装原生ajax

    jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿.这时我们就 ...

  3. [vijosP1303]导弹拦截(最长上升子序列转LCS)

    描述 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭 ...

  4. JAVA反射原理解读

    一.什么是JAVA的反射 1.在运行状态中,对于任意一个类,都能够知道这个类的属性和方法. 2.对于任意一个对象,都能够调用它的任何方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称为JAV ...

  5. laravel初次学习总结及一些细节

    最近学习了laravel,先简单谈谈学习的感受吧 刚开始一周多一点的时间先把laravel的开发文档看了一遍,,感觉刚开始接触时的感觉laravel的目录与thinkphp又不一样,它们的渲染模板的方 ...

  6. Compare Version Numbers leetcode

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  7. 算法模板——平衡树Treap

    实现功能如下——1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大 ...

  8. Android 实现QQ第三方登录

    Android 实现QQ第三方登录 在项目中需要实现QQ第三方登录,经过一番努力算是写出来了,现在总结以下,以防以后遗忘,能帮到其他童鞋就更好了. 首先肯定是去下载SDK和DEMO http://wi ...

  9. ViewPager 滑动一半的判断方法以及左滑右滑判断

    做项目的时候,会碰到用viewpager + fragments去实现多页滑动.有些时候需要完成:界面在滑动到一半或是一半以上的时候,需要把title之类的切换到下一个页面.这个时候仅仅依赖Viewp ...

  10. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...