Mysql 基于列的字符串长度比较的分组查询中的结果计数
我有一张这样的桌子:Mysql 基于列的字符串长度比较的分组查询中的结果计数,mysql,Mysql,我有一张这样的桌子: | id | message | status | |----|------------------------------------------------------------|--------| | 1 | Lorem ipsum dolor sit amet | pass | | 2 | L
| id | message | status |
|----|------------------------------------------------------------|--------|
| 1 | Lorem ipsum dolor sit amet | pass |
| 2 | Lorem ipsum dolor sit amet, consectetur | fail |
| 3 | Lorem ipsum dolor sit amet, consectetur adipisicing elit | fail |
| | Lorem ipsum dolor sit amet, consectetur adipisicing elit |
我希望能够选择状态为group by的记录计数。当消息字符串长度大于某个数字时,我希望它对计数的贡献是ceil(消息长度/某个数字)
。例如,第三条消息长度超过70个字符。因此,它应该被计算为2,而不仅仅是1
我该怎么做呢
我尝试了下面的查询,其中我在消息字符串上使用了group\u concat
,但我知道这是一个错误的解决方案
select ceil((char_length(group_concat(`message`)) - (count(`message`) - 1))/70) as count, `status` from `table` group by `status`
>代码> -(计数(消息)- 1)< /C>部分用于考虑由<代码> GROPY-CONTAT < /C>函数>的逗号。< / P> 查询的预期结果为:
| count | status |
|-------|--------|
| 1 | pass |
| 3 | fail |
下面的查询为我提供了解决方案:
select sum(count), status from (select ceil(char_length(message)/70) as count, status from table) as data group by status
我不知道有那么简单