mysql group by 分组聚合后,按着聚合的时间进行升序排序,乱序字段组内再排序

业务背景:首先对sd.project_name项目名称进行分组后,但是分组聚合的GROUP_CONCAT的start_time和end_time组合后乱序了,导致的sql结果是这样子的

这个有还无剧场最早的一个场次时间是10:30,按道理讲他应该是排在第一个位置。

但是group by 之后分组就乱序了,因此需要对组内的start_time进行升序排序,

使用GROUP_CONCAT之后然后再使用 ORDER BY sd.start_time ASC SEPARATOR ', '进行排序即可

SELECT

sd.project_name as projectName,

sd.project_type as projectType,

sd.project_time as projectTime, GROUP_CONCAT(DATE_FORMAT(sd.start_time,'%H:%i'),'#',DATE_FORMAT(sd.end_time,'%H:%i') ORDER BY sd.start_time ASC SEPARATOR ', ') as startTime,

IFNULL(sum(pd.book_num),0) as bookNum,

IFNULL(ROUND(sum(pd.check_num)/sum(pd.capacity_num)*100,1),0) as seatRatio

FROM

r_venue_management_scheduling_detail sd

left JOIN r_venue_management_project_day pd ON sd.project_name = pd.project_name and pd.enter_date=CURRENT_DATE()

WHERE

sd.start_time >= '2023-07-25 00:00:00'

AND sd.end_time <= '2023-07-25 23:59:59'

AND sd.dept_id = '001003'

and sd.status=1

GROUP BY sd.project_name

order by sd.project_type,startTime

相关推荐
0xDevNull14 小时前
MySQL数据冷热分离详解
后端·mysql
一江寒逸15 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain15 小时前
linux个人心得22 (mysql)
数据库·mysql
做个文艺程序员16 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
MaCa .BaKa16 小时前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发
一江寒逸16 小时前
零基础从入门到精通MySQL(上篇):筑基篇——吃透核心概念与基础操作,打通SQL入门第一关
数据库·sql·mysql
爱莉希雅&&&17 小时前
linux中MySQL数据库备份恢复的四种方法(更新中)
linux·数据库·mysql·数据库备份·mysqldumper
枕布响丸辣18 小时前
Python 操作 MySQL 数据库从入门到精通
数据库·python·mysql
Java开发追求者19 小时前
windows卸载mysql教程
mysql·mysql卸载
草莓熊Lotso20 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql