想写一句sql,将某段时间内支付金额满XX元并且没有送赠品的用户列出来
最近在公司在搞活动,boss说要回馈客户,对某段时间内支付金额满XX元的用户赠送礼物。
MySQL数据库
【订单表 order_info】
order_sn(订单号) money_paid(已支付金额) user_id(用户ID) pay_time(支付时间) .....
【订单商品表 order_goods】
rec_id(自增id) goods_name(商品名称) goods_price(商品价格) goods_num(商品数量) ...
-----------------------------
我尝试用下面的sql将某段时间内支付金额满80元并且没有送赠品(商品价格为0)的用户列出来
SELECT oi.user_id,SUM(oi.money_paid) as all_money_paid, GROUP_CONCAT(oi.order_sn) as order_sns,
(SELECT COUNT(goods_name) FROM order_goods
WHERE order_sn IN(GROUP_CONCAT(oi.order_sn)) AND goods_price=0) AS gift_num
FROM order_info as oi
WHERE oi.pay_time>='2011-05-11' AND oi.pay_time <'2011-05-20'
GROUP BY oi.user_id HAVING SUM(oi.money_paid)>=80
结果(一个用户可能会下几个订单)
-----------------------------------------------------------------------------------------------------------
【user_id】 【all_money_paid】 【order_sns】 【gift_num】
125 110.00 2011040969488,2011040917914,2011040941384 0
215 110.00 2011040969458 1
378 110.00 2011040960188,2011040900784 0
-----------------------------------------------------------------------------------------------------------
实际上
用户ID 125有一个赠品存在于订单2011040941384中,
用户ID 215有一个赠品存在于订单2011040969458中,
用户ID 378没有一个赠品
也就是order_sns只有一个订单的时候统计结果是正确的,要是2个或两个以上就不行了。
结果一番努力还是不知道怎么写比较好,请各位大大帮帮忙,等着用,比较急!!