SQL基础学习笔记<第三天>

3.1 SQL时间

SELECT
	paidTime,
	date( paidTime ),
	date_format( paidtime, '%Y-%m-%d' ),
	DATE_ADD( paidtime, INTERVAL 1 DAY ) 
FROM
	test2.orderinfo

3.2 练习

1)统计不同月份的下单人数
SELECT MONTH
	( paidTime ) AS '月',
	count( DISTINCT userId ) AS '用户数' 
FROM
	orderinfo 
WHERE
	ispaid = '已支付' 
GROUP BY
	MONTH (
	paidTime)

结果如下:

2)三月份复购率与回购率

复购率

SELECT
	count( ct ),
	count(
	IF
	( ct > 1, 1, NULL )) 
FROM
	( SELECT userid, count( userid ) AS ct FROM orderinfo WHERE isPaid = '已支付' AND MONTH ( paidTime ) = 3 GROUP BY userid ) d

回购率

SELECT
	t1.m,
	count( t1.m ),
	count( t2.m ) 
FROM
	(
	SELECT
		userid,
		DATE_FORMAT( paidTime, "%Y-%m-01" ) m 
	FROM
		orderinfo 
	WHERE
		ispaid = '已支付' 
	GROUP BY
		userId,
	DATE_FORMAT( paidTime, "%Y-%m-01" )) t1
	LEFT JOIN (
	SELECT
		userid,
		DATE_FORMAT( paidTime, "%Y-%m-01" ) m 
	FROM
		orderinfo 
	WHERE
		ispaid = '已支付' 
	GROUP BY
		userId,
	DATE_FORMAT( paidTime, "%Y-%m-01" )) t2 ON t1.userid = t2.userid 
	AND t1.m = DATE_SUB( t2.m, INTERVAL 1 MONTH ) 
GROUP BY
	t1.m

结果如下:

3)统计男女用户的消费频次是否有差异
SELECT
	sex,
	avg( ct ) 
FROM
	(
	SELECT
		o.userid,
		sex,
		count( 1 ) AS ct 
	FROM
		orderinfo o
		JOIN ( SELECT * FROM `user.info` WHERE sex <> '' ) a ON o.userid = a.userid 
	WHERE
		isPaid = '已支付' 
	GROUP BY
		a.userid,
		sex 
	) t2 
GROUP BY
	sex

结果如下:

4)统计多次消费的用户 ,第一次消费和最后一次消费间隔是多少?
SELECT
	userid,
	max( paidTime ),
	min( paidTime ),
	datediff(
		max( paidTime ),
	min( paidTime )) 
FROM
	orderinfo 
WHERE
	isPaid = '已支付' 
GROUP BY
	userid 
HAVING
	count( 1 ) > 1

结果如下:

5)统计不同年龄段,用户的消费金额是否有差异
SELECT
	age,
	avg( ct ) 
FROM
	(
	SELECT
		o.userid,
		age,
		count( o.userId ) AS ct 
	FROM
		orderinfo o
		LEFT JOIN ( SELECT userid, CEIL(( YEAR ( now()) - YEAR ( birth ))/ 10 ) age FROM `user.info` WHERE birth > '1901-00-00' ) t ON o.userId = t.userid 
	WHERE
		ispaid = '已支付' 
	GROUP BY
		o.userid,
		age 
	) t2 
GROUP BY
	age

结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值