• 复杂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;
    

      

  • 相关阅读:
    Centos7搭建OpenNebula云平台
    Python中__new__和__init__的区别与联系
    16个python常用魔法函数
    微信小程序< 1 > ~ Hello 微信小程序
    扬帆起航,再踏征程(一)
    Java 社区平台
    Java 社区平台
    <Android 应用 之路> 一个类似今日头条的APP
    使用标准C读取文件遇到的结构体对齐问题及其解决办法
    编译64位cu文件的设置
  • 原文地址:https://www.cnblogs.com/therunningfish/p/6709590.html
Copyright © 2020-2023  润新知