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

相关推荐
hgz071010 小时前
慢SQL分析与优化实战
mysql
talenteddriver10 小时前
mysql: MySQL索引基础概念
数据库·mysql
蜂蜜黄油呀土豆10 小时前
MySQL 事务原理深度解析:从 ACID 到并发控制机制
mysql·mvcc·并发控制·数据库事务·acid
微爱帮监所写信寄信10 小时前
微爱帮监狱写信寄信小程序:MySQL核心日志与备份恢复安全架构
数据库·mysql·小程序·邮局·监狱寄信·挂号信·邮政
BIBI204912 小时前
Windows 上配置 Nacos Server 3.x.x 使用 MySQL 5.7
java·windows·spring boot·后端·mysql·nacos·配置
刘一说12 小时前
MySQL 版本演进全景图:从 5.6 到 8.4 的技术变革与行业实践
数据库·mysql
G_H_S_3_13 小时前
【网络运维】MySQL 高可用架构实践:备份策略、主从复制与读写分离
运维·网络·mysql
Java开发追求者14 小时前
Mysql超详细安装配置教程(保姆级)
windows·mysql
啥都不懂的小小白14 小时前
MVCC深度解析:MySQL如何实现高效无阻塞的并发读写
数据库·mysql·mvcc
austin流川枫14 小时前
🔥MySQL的大表优化方案 (实战分享)
java·mysql·性能优化