MySQL 查询统计订单
昨天运营的同事突然让帮忙查询统计数据,有几个数据之前没有处理过,遂记录下来。
- 每日付费的总人数。
一开始看到这个的时候觉得很简单,只要按照购买日期分组就可以了,SQL如下
SELECT COUNT(1),DATE(create_time) AS buy_date
FROM stock_app.t_order
WHERE DATE(create_time)
BETWEEN '2019-02-14'
AND '2019-04-23'
GROUP BY buy_date
ORDER BY buy_date
但是查完才发现数据对不上,因为同一个用户可能一天会购买不止一单,但是只能算一个,所以还需要做去重处理,SQL如下
SELECT COUNT(DISTINCT userid),DATE(create_time) AS buy_date
FROM stock_app.t_order
WHERE DATE(create_time)
BETWEEN '2019-02-14'
AND '2019-04-23'
GROUP BY buy_date
ORDER BY buy_date
COUNT(DISTINCT userid)
可以对相同的userid进行去重处理。
- 首付费人数
顾名思义就是第一次购买的用户,我们可以先查询出每个用户的首单的订单号,SQL如下
SELECT order_id
FROM stock_app.t_order a
RIGHT JOIN (SELECT MIN(create_time) AS first_order_time,useridFROM stock_app.t_orderGROUP BY userid
) b ON a.userid = b.userid AND a.create_time = b.first_order_time
然后将查询结果作为子查询的条件的做分组查询,SQL如下
SELECT COUNT(1),DATE(create_time) AS buy_date
FROM stock_app.t_order
WHERE DATE(create_time) BETWEEN '2019-02-14' AND '2019-04-23'
AND order_id IN (SELECT order_idFROM stock_app.t_order aRIGHT JOIN (SELECT MIN(create_time) AS first_order_time,useridFROM stock_app.t_orderGROUP BY userid) b ON a.userid = b.userid AND a.create_time = b.first_order_time
)
GROUP BY buy_date
ORDER BY buy_date
- 重复购买用户数
需要先查出一天购买多次的用户和订单时间,SQL如下
SELECT userid,DATE(create_time) AS buy_date
FROM stock_app.t_order
WHERE DATE(create_time)
BETWEEN '2019-02-14'
AND '2019-04-23'
GROUP BY userid,buy_date
HAVING COUNT(userid) > 1
ORDER BY buy_date
再分组查询每天的重复用户数,如下
SELECT COUNT(1),buy_date
FROM
(SELECT userid,DATE(create_time) AS buy_dateFROM stock_app.t_order WHERE DATE(create_time) BETWEEN '2019-02-14' AND '2019-04-23'GROUP BY userid,buy_date HAVING COUNT(userid) > 1ORDER BY buy_date
) t1
GROUP BY buy_date
ORDER BY buy_date
- 首付费用户购买金额最多的产品
先分组查询出每天各个产品的销售金额,并按金额从大到小排序,再对查询结果按交易日期分组,如下
SELECT product,buy_date
FROM
(SELECT product,SUM(total_fee) AS sum_fee,DATE(create_time) AS buy_dateFROM stock_app.t_order aWHERE DATE(create_time) BETWEEN '2019-02-14' AND '2019-04-23'AND userid NOT IN (SELECT userid FROM stock_app.t_order WHERE DATE(create_time) < DATE(a.create_time)GROUP BY userid)GROUP BY product,buy_date ORDER BY buy_date,sum_fee DESC
) t1
GROUP BY buy_date
- 重复购买用户购买金额最多的产品
这个第4个查询差不多,但是需要联表查询重复购买的用户,如下
SELECT product,sum_fee,buy_date
FROM
(
SELECT product,SUM(total_fee) AS sum_fee,DATE(create_time) AS buy_date
FROM stock_app.t_order a
RIGHT JOIN(SELECT userid,DATE(create_time) AS buy_dateFROM stock_app.t_order WHERE DATE(create_time) BETWEEN '2019-02-14' AND '2019-04-23'GROUP BY userid,buy_date HAVING COUNT(userid) > 1ORDER BY buy_date
) b ON a.userid = b.userid AND DATE(a.create_time) = b.buy_date
WHERE DATE(create_time)
BETWEEN '2019-02-14'
AND '2019-04-23'
GROUP BY product,buy_date
ORDER BY buy_date,sum_fee DESC
) t1
GROUP BY buy_date
仅供参考
MySQL 查询统计订单相关推荐
- mysql一秒查询次数_单个select语句实现MySQL查询统计次数
单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...
- Mysql查询统计按年月日(年、季、月、周、日)
Mysql查询统计:按年.季.月.周.日 按年统计交易金额. SELECTsum(goods_fee),YEAR (FROM_UNIXTIME(create_time, '%Y-%m-%d')) FR ...
- Mysql 查询统计练习
2019独角兽企业重金招聘Python工程师标准>>> 1.建表 customers 顾客表 products 产品表 orders 订单表 -- 顾客表 CREATE TABLE ...
- MySQL 查询统计 日期查询
文章目录 1. 查询前7天的日期 2. 查询订单表出现日期,成交额总和 3 根据日期统计数据 1. 查询前7天的日期 select a.click_date from (SELECT date_sub ...
- MySQL查询统计今年12个月的数据,没有默认为空
此处先省略二百字的废话 做报表统计的时候,常常需要在MySQL端用sql统计近12个月的数据,或者近30天的数据. 假如遇到当月没有数据,或者当天没有数据时,默认为0. SELECTCASE WHEN ...
- Mysql实时统计订单数量_Spark实时统计订单量
背景 用户下单数据会通过业务系统实时产生入库到mysql库,我们要统计通某个推广渠道实时下单量,以便线上运营推广人员查看不同渠道推广效果进而执行不同推广策略 系统架构 架构图 注:组件不了解的同学可参 ...
- mysql 查询一个订单下多个商品_如何商品信息多个sql查询搜索
重点sql语句的处理 $sql= "select * from ht_order o,tb_user u where o.BuyerId=u.UserID ";//sql语句,这是 ...
- mysql查询统计不及格人数_MySQL,查询及格人数,不及格人数
一个表score,字段是name,class,score.分别代表姓名,所在班级,分数. 要求用一条语句查出每个班的及格人数和不及格人数,格式为:class,及格人数,不及格人数. SELECT `c ...
- mysql查询女生的成绩_MySQL 统计查询实现代码
$conn = @mysql_connect("localhost","root","root123"); if (!$conn){ die ...
- mysql实现统计查询_MySQL 统计查询实现代码
统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. 语法: SELECT COUNT(column) FROM tb_name 该 SQL 语法用于统计某一字段的数 ...
最新文章
- TFS的Web门户工作项(七)
- GIL(全局解释器锁)与互斥锁
- 如何调试Android Framework?
- GIS 中openstreetmap数据获取
- CodeForces 689B	Mike and Shortcuts (bfs or 最短路)
- linux下libpcap抓包分析
- CSS中em和px单位的区别(转)
- Java基础拾遗:线程相关问题
- jQuery学习之五---效果
- Vue项目开发相关问题总结
- html 屏幕录像,Screencastify:屏幕录像
- 关于MSN群 创建MSN群 使用MSN群
- 注册公司的基本流程 version_1.0
- Firefox 插件 FlashGot 创建 Axel 下载任务
- 构建自己的 LINUX 系统(二)
- 曾几何时,还是游吟长安的醉客
- 动人的牵线美的连接符-两张表的查询(一)
- 红光光浴抗衰机制#大健康#红光光浴#红光#种光光学
- web应用程序安全性测试_Web应用程序导航菜单的可访问性
- 安装PHPStudy(小皮)V8.1最详细安装教程
热门文章
- 对主流网络威胁情报标准应用的比较研究
- 百度地图API计算经纬度
- LeetCode-Python-275. H指数 II
- 商务部关于促进电子商务规范发展的意见
- openlayers4+中高德导航路径的实现
- 最终结束漂泊的身份-我办理北京人才引进的经历
- (轉貼) 完全用Linux工作,摈弃Windows (OS) (Linux)
- 【测试源】【rtmp flv hls】拉流播放测试
- 语法错误 : 缺少“;”(在“*”的前面)_学科教学不能缺少生本意识
- [NPUCTF2020]碰上彩虹,吃定彩虹