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

相关推荐
ChristXlx1 分钟前
Linux安装mysql(虚拟机适用)
linux·mysql
瀚高PG实验室43 分钟前
timestampdiff (MYSQL)函数在Highgo DB中的写法
数据库·mysql·瀚高数据库
还是鼠鼠1 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试
云和数据.ChenGuang1 小时前
批量给100台服务器装系统,还要完成后续的配置和软件部署
运维·服务器·开发语言·mysql
程序员卷卷狗2 小时前
为什么MySQL默认使用可重复读RR?深入解析binlog与隔离级别的关系
数据库·mysql
SoleMotive.3 小时前
redis和mysql有什么区别,以及redis和mysql都有什么缺点,以及什么地方redis不如mysql?
数据库·redis·mysql
聪明努力的积极向上3 小时前
【MYSQL】IN查询优化
数据库·mysql
梁萌3 小时前
MySQL主从数据同步实战
数据库·mysql
嘻哈baby3 小时前
MySQL主从复制与读写分离实战指南
数据库·mysql·adb
q_19132846954 小时前
基于SpringBoot2+Vue2的装修报价网站
java·vue.js·spring boot·mysql·计算机毕业设计·演示文稿