高端精品网站建设,洪梅做网站,顺企网官网登录入口,销售app哪个好用需求
每周周一#xff0c;统计菜单在过去一周#xff0c;点击次数#xff0c;和点击人数#xff08;同一个人访问多次按一次计算#xff09;
表及数据
日志表
CREATE TABLE t_data_log (
id varchar(50) NOT NULL COMMENT 主键id,
operation_object varchar(500) DE…需求
每周周一统计菜单在过去一周点击次数和点击人数同一个人访问多次按一次计算
表及数据
日志表
CREATE TABLE t_data_log (
id varchar(50) NOT NULL COMMENT 主键id,
operation_object varchar(500) DEFAULT NULL COMMENT 操作对象-菜单ID,
operation_description varchar(1000) DEFAULT NULL COMMENT 操作描述,
operation_user varchar(50) DEFAULT NULL COMMENT 操作用户-用户ID,
operation_time datetime DEFAULT NULL COMMENT 操作时间,
PRIMARY KEY (id) USING BTREE,
KEY idx_operation_user (operation_user)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 ROW_FORMATDYNAMIC COMMENT数据日志表;
菜单表
CREATE TABLE t_menus (
id varchar(50) NOT NULL COMMENT 主键id,
menu_name varchar(100) DEFAULT NULL COMMENT 菜单名称,
PRIMARY KEY (id) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 ROW_FORMATDYNAMIC COMMENT菜单表;
select * from t_menus;
select * from t_data_log;
初始化数据
insert into t_menus values(1,融资模版);
insert into t_menus values(2,融资计划);
insert into t_menus values(3,融资机构); insert into t_data_log values(1,1,查询,u_001,2024-04-29 17:07:37);
insert into t_data_log values(2,1,查询,u_002,2024-04-29 17:07:37);
insert into t_data_log values(3,2,查询,u_001,2024-04-29 17:07:37);
insert into t_data_log values(4,2,查询,u_002,2024-04-29 17:07:37);
insert into t_data_log values(5,2,查询,u_003,2024-04-29 17:07:37);
查询sql
group by 菜单ID
select m.menu_name ,count(*) count, count(distinct(l.operation_user)) person_count,
count(operation_user) person_count_total from t_menus m join t_data_log l on m.id l.operation_object
group by m.id; group by 菜单名称
select m.menu_name ,count(*) count, count(distinct(l.operation_user)) person_count,
count(operation_user) person_count_total from t_menus m join t_data_log l on m.id l.operation_object
group by m.menu_name; 对比二者区别分组字段不同一个菜单ID一个菜单名称查询结果是菜单名称其他字段是count疑问依据mysql语法规则查询结果字段必须包含在group 字段中
根据菜单ID分组结果中是菜单名称结果是否准确
结论是准确的
select 字段不在group by的情况
1聚合函数中字段可以不在group by中
像 sum()、avg()、max()、min()、count()这些聚合函数中的字段可以不在group by中。
2group by的字段里有主键字段。
即菜单ID作为分组字段菜单名称可不在group中
3如果sql_mode参数中没有ONLY_FULL_GROUP_BY,是允许select字段可以不在group by字段里的也就是说
但是这种只是保证不报错无法保证结果的准确性
参考
MySQL中select的字段只能取group by 中的字段吗_mysql中查询条件只能有group by中字段-CSDN博客
https://www.toutiao.com/article/7044793472104399397/?appnews_articletimestamp1720742979use_new_style1req_id2024071208093964E54949A5B564B919C4group_id7044793472104399397wxshare_count1tt_fromweixinutm_sourceweixinutm_mediumtoutiao_androidutm_campaignclient_shareshare_token33e30f85-dfa0-4c85-abde-4444d46dd493sourcem_redirect