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

相关推荐
李白的天不白1 分钟前
服务器上数据库的创建
mysql
ha_lydms10 分钟前
AnalyticDB基本概念
mysql·adb·analyticdb
Fanta丶1 小时前
23.MySql group by优化、limit优化、 count优化、update优化
mysql
医疗信息化王工1 小时前
医院自律端系统——预警处置模块全栈实战(ASP.NET Core + Vue3 + Quartz 定时调度)
mysql·postgresql·vue·asp.net core·quartz
NineData1 小时前
SQL 都在等锁时,ChatDBA 先帮 MySQL 找到谁在挡路
数据库·人工智能·sql·mysql·安全·数据复制·数据迁移工具
神仙别闹1 小时前
基于 PHP + MySQL学生信息管理系统
android·mysql·php
Amnesia0_02 小时前
MYSQL复合查询和内外连接
数据库·mysql
Fanta丶2 小时前
22.MySql order by优化
mysql
哆啦A梦——3 小时前
Ubuntu 虚拟机 Docker 与 MySQL 8.0.42 部署指南
mysql·ubuntu·docker
ManageEngine卓豪3 小时前
数据库可观测性:MySQL与Redis监控核心监控指标与全栈运维解决方案
数据库·redis·mysql·数据库性能·数据库监控