复杂SQL查询实例-5种普惠产品必须显示...
复杂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种普惠产品必须显示...的更多相关文章
- django中使用原生的sql查询实例
在app文件夹下创建database_operations.py文件,写如下内容: import pymysql from 项目名.settings import DATABASES class Da ...
- SQL查询的几种方式
/* 左连接 left join 或者 left outer join */ /* 左连接 Table_A表数据全部显示,Table_B根据条件匹配Table_A 匹配上显示,否则显示NULL */ ...
- SQL中常用模糊查询的四种匹配模式&&正则表达式
执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- MySQL中优化sql语句查询常用的种方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...
- SqlSugar-执行Sql语句查询实例
使用SqlSugar执行sql语句 1.简单查询 SqlSugarClient db = SugarContext.GetInstance(); //执行sql语句,处理 //1.执行sql,转成li ...
- Mysql常用30种SQL查询语句优化方法
出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
- MySQL 常用30种SQL查询语句优化方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
随机推荐
- 规范 : 过程 : login cookies sessionTimeOut
规范 用户登入网站将得到一个cookies,如果用户有2个account,各别登入admin page 和 client page,是会得到2个cookies. 在reload page时,后台会得到 ...
- 指针与数据结构算法_链表(C语言)
一.变量: 声明一个变量系统是没有给这个变量分配内存空间的: 例: int j;//编译的时候是没有分配内存空间的 ;//计算机在编译的时候就会给这个i分配4个字节的内存空间 二.malloc动态分配 ...
- C#异步的世界【下】
接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\aw ...
- iOS 注册密码加密 添加了时间戳 遇到的问题...
今天项目 遇到一个事故,我本想用 一个形容这个事故的adj 算了 既然 叫事故 已经能表达我们处于的一种状态, 是这样的: 有小部分用户反应 app无法注册 总提示密码错误的情况 实际 该步骤 已经 ...
- http自动跳转https小记
因近期跌代更新ios/android后,由于担心ios https从17年起限制的问题,故目前我们将http更改为https,但既然支持https,故想将服务器直接更新为https,将原http请求自 ...
- C++ 容器对象vector和list 的使用
在<<c++ primer>>第四版Exercise Section 9.3.4 的Exercise 9.20 是这样的一道题目:编写程序判断一个vector<int&g ...
- R处理大数据集
R会把所有的对象读存入虚拟内存中.对我们大多数用户来说,这种设计可以提高与R相互的速度,但是当分析大数据集时,这种设计会降低程序运行速度有时还会产生跟内存相关的错误. 内存限制主要取决于R的build ...
- RabbitMQ-从基础到实战(3)— 消息的交换
1.简介 在前面的例子中,每个消息都只对应一个消费者,即使有多个消费者在线,也只会有一个消费者接收并处理一条消息,这是消息中间件的一种常用方式.还有另外一种方式,生产者生产一条消息,广播给所有的消费者 ...
- Spark结构式流编程指南
Spark结构式流编程指南 概览 Structured Streaming 是一个可拓展,容错的,基于Spark SQL执行引擎的流处理引擎.使用小量的静态数据模拟流处理.伴随流数据的到来,Spark ...
- 转载 感受K2.Net 2003工作流解决方案
接触SourceCode公司的工作流产品K2.NET 2003有一段时间了,想把一些心得分享出来,和各位共同探讨一下,抛砖引玉,希望能对相关人士以启发. K2.Net 2003是基于微软.Net Fr ...