在开发中,有时候为了效率,会直接使用数据库sql语句直接来查询数据
比如私用dapper时,复杂得回使用原生语句查询,在使用到分组语句时,也会有其他意图
1、比如今天需要根据需求分型和第三产业分类编码来分组查询统计出公司总数、公司名称、截至时间段等
如果直接使用简单得Group by分组,如下
select sp.expected_delivery_time,sp.expected_delivery_time,
COUNT(bc.CompanyName),bc.CompanyName
from supd_demand_info sp
INNER JOIN base_companyinfo bcon sp.CreatorId=bc.UserId
GROUP BY sp.DemandType,sp.title
如上简单写得话,查询出来得每组数据中, bc.CompanyName 只有一条,查询结果如下
但实际第一和第二组数据中,CompanyName应该是两条
如使用GROUP_CONCAT(exper)函数改成如下,即可解决
注意:MySQL的GROUP_CONCAT函数来获取分组后的所有记录。GROUP_CONCAT函数可以将每个分组中的记录连接成一个字符串,并以逗号分隔。
2、另外知识点:上面需要获取每组中预期收获时间段数据,单上面得写法只能分两个字段获取,再在你的代码里拼接,但是如果使用如下mysql得拼接函数即可直接查询出来,更多写法请参考后续的文章mysql拼接函数
select CONCAT(MIN(sp.expected_delivery_time),'至',MAX(sp.expected_delivery_time)) as dateStr,
COUNT(bc.CompanyName),GROUP_CONCAT(bc.CompanyName)
from supd_demand_info sp
INNER JOIN base_companyinfo bc on sp.CreatorId=bc.UserId -- and bc.City='410700'
GROUP BY sp.DemandType,sp.title
查询结果如下: