复杂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. redis命令大全

    redis windows下使用及redis命令 Redis 是一个开源,高级的键值对的存储.它经常作为服务端的数据结构,它的键的数据类型能够是strings, hashs, lists, sets( ...

  2. mybatis基础,mybatis配置文件核心组件typeHandler元素

    无论是从预处理语句中设置一个值,还是从结果集里取出一个值,都会用类型处理器将获取的值以合适的方式转换成 Java 类型 可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型 实现 o ...

  3. C#"曾经的字符串数组"string[] array=new string[]{"**","****"};

    写博客是一件很伟大的事情,尤其是也牛逼的博客,因为它能帮助需要的人,更能使自己对知识有一个更为深刻的理解! 欢迎关注我的博客! 字符串操作(取当前时间) string time=convert.tos ...

  4. Archlinux 升级 pacman 时遇到的问题及其解决

    这是 Archlinux 升级时经常碰到的老问题.提示如下 问题来了 # yaourt -Syua ==> 警告:使用 root 用户构建软件包存在风险. 请使用非特权用户运行 yaourt . ...

  5. gitoschina使用入门

    1 下载git sudo apt-get install git 2 添加公钥:terminal:  ssh-keygen -t rsa -C "git.oschina.net" ...

  6. U-Boot 内核 (一)

    1.首先安装Vmware,安装Ubuntu 15.04 (安装时记住用户名和密码) 2.终端命令Ctrl+Alt+T 3.进行准备工作 安装工具 sudo apt-get update sudo ap ...

  7. mysql数据库开启慢查询日志

    修改配置文件 在配置文件my.ini中加上下面两句话 log-slow-queries = C:\xampp\mysql_slow_query.log long_query_time=3 第一句使用来 ...

  8. HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

    HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证 ...

  9. 前端资讯周报 3.13 - 3.19: WebVR来了!以及如何优化scroll事件性能

    每周一我都会分享上一周我订阅的技术站点中,和解决问题的过程中阅读到的值得分享的文章.这是迫使我学习的一个动力 本周推荐 Minecraft in WebVR with HTML Using A-Fra ...

  10. Static语句块和初始语句块的使用---2015年10月恒生电子笔试试卷

    package lhm.test; /** * @author lenovo * */public class Person { private int id; private static int ...