SQL 分组统计去重有条件的过滤

见字如面,如标题拆分:

示例:

前序:(表结构)

CREATE TABLE `data_table_name` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '用户姓名',
  `age` tinyint(3) NOT NULL DEFAULT '0' COMMENT '年龄',
  `is_online` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否在线 1:在线 2:离线 ',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='测试数据表';

表数据:

二、 需求

1、统计所有用户不同年龄段的数量,以年龄为维度分组

select count(age) from data_table_name group by age;

执行结果1:

2、统计所有用户不同年龄段的数量,以年龄为维度分组且以创建时间去重

select *, count(DISTINCT create_time) from data_table_name group by age;

执行结果2:

3、统计所有用户不同年龄段的数量,以年龄为维度分组且以创建时间去重,并且创建时间大于 > 1653903132

select *,
count(DISTINCT case when create_time > 1653903132 then create_time end) as num from data_table_name group by age;

执行结果3:

4、 统计所有用户不同年龄段的数量,以年龄为维度分组且以创建时间去重,并且创建时间大于 > 1653903132 and is_online = 1

select *, count(DISTINCT case when create_time > 1653903132 and is_online = 1 then create_time end) as num from data_table_name group by age;

执行结果4:

以上,需求千息万变,万变不离其宗。


我为人人,人人为我,美美与共,天下大同。

展开阅读全文

页面更新:2024-02-11

标签:在线   离线   万变不离其宗   维度   年龄段   有条件   数量   年龄   需求   时间   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top