统计分组中多列数据

一, 问题

按tid(身份编号)分组, 统计每组中新用户数和老用户数    

二, 建表, 初始化数据

-- drop table test1;
CREATE TABLE `test1` (
	`id` INT (11),
	`name` VARCHAR (60),
	`birth` DATETIME ,
	`tid` VARCHAR (60)
); 
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('1','a','2013-07-01 00:00:00','11');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('2','b','2013-06-01 00:00:00','22');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('3','c','2013-08-01 00:00:00','11');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('4','d','2013-07-01 00:00:00','22');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('5','e','2013-08-01 00:00:00','11');

SELECT * FROM test1;

三, 分别求新老用户

-- 老用户: ~ 2013-07-01
SELECT tid, birth
FROM test1
WHERE birth < '2013-07-01'

-- 新用户: 2013-07-01 ~ 
SELECT tid, birth
FROM test1
WHERE birth >= '2013-07-01'

四, 一次求出个分组中新老用户数

-- 求新老用户
SELECT 	tid AS '省份', 
	COUNT(CASE WHEN birth < '2013-07-01' THEN 1 ELSE NULL END) AS '老用户',
	COUNT(CASE WHEN birth >= '2013-07-01' THEN 1 ELSE NULL END) AS '新用户'	
FROM test1
GROUP BY tid


五, 全部 sql

-- drop table test1;
CREATE TABLE `test1` (
	`id` INT (11),
	`name` VARCHAR (60),
	`birth` DATETIME ,
	`tid` VARCHAR (60)
); 
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('1','a','2013-07-01 00:00:00','11');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('2','b','2013-06-01 00:00:00','22');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('3','c','2013-08-01 00:00:00','11');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('4','d','2013-07-01 00:00:00','22');
INSERT INTO `test1` (`id`, `name`, `birth`, `tid`) VALUES('5','e','2013-08-01 00:00:00','11');

SELECT * FROM test1;


-- 老用户: ~ 2013-07-01
SELECT tid, birth
FROM test1
WHERE birth < '2013-07-01'

-- 新用户: 2013-07-01 ~ 
SELECT tid, birth
FROM test1
WHERE birth >= '2013-07-01'


-- 求新老用户
SELECT 	tid AS '省份', 
	COUNT(CASE WHEN birth < '2013-07-01' THEN 1 ELSE NULL END) AS '老用户',
	COUNT(CASE WHEN birth >= '2013-07-01' THEN 1 ELSE NULL END) AS '新用户'	
FROM test1
GROUP BY tid





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值