2017-07-26 50 views
0

的字符串长度的比较,我有一个表,看起来像这样:计数结果在GROUP BY查询基于列

| 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 | 

我希望能够通过身份与组选择记录计数。当消息字符串长度超过某个数字时,我希望它对计数的贡献是ceil(message_length/certain_number)。例如,第三个消息长度超过70个字符。所以,它应该被计为2而不是1。

我该怎么处理它?

我试过下面的查询,我在消息字符串上使用group_concat,但我知道这是一个错误的解决方案。

select ceil((char_length(group_concat(`message`)) - (count(`message`) - 1))/70) as count, `status` from `table` group by `status` 

- (count(message) - 1)一部分用于考虑group_concat功能引入的逗号。

用于查询的预期结果是:

| count | status | 
|-------|--------| 
| 1 | pass | 
| 3 | fail | 

回答

0

下面的查询给我的解决方案:

select sum(count), status from (select ceil(char_length(message)/70) as count, status from table) as data group by status 

我不知道它是那么简单。