php – Mysql分组数据和正则表达式

我有一张表,在检查患者后由我们的提供者记录代码.代码看起来像A11,B99,C68,A12,O87,F76等.现在,我需要创建一个报告,将这些代码分组并计算在内.组应该看起来像A00-B99,C00-D48,D50-D89等.我已经研究过,发现我可能不得不使用REGEXP,我想尽量避免使用它.有人可以帮助什么是有效和优化的方式吗?

表:

 ID  Codes   description
  1  A11     Infection
  2  A01     Intestinal infectIoUs diseases   
  3  H77     Intestinal infectIoUs diseases    
  5  D98     Intestinal infectIoUs diseases      
  6  D98     Intestinal infectIoUs diseases
  7  A11     Intestinal infectIoUs diseases
  8  A00     Intestinal infectIoUs diseases
  9  A03     Intestinal infectIoUs diseases
  10  D00     Intestinal infectIoUs diseases   
11  D98     Intestinal infectIoUs diseases
... 
...
...
...

期望的结果

code_group    Count
A00-B99       10
C00-D48       50
D50-D89       100  
...
...
...

我希望我解释了这个问题.

谢谢你的帮助!

解决方法:

您可以使用case语句进行聚合:

select (case when code between 'A00' and 'A99' then 'A00-A99'
             when code between 'B00' and 'C48' then 'B00-C48'
             when code between 'C49' and 'D99' then 'C49-D99'
             . . .
        end) as codeGroup,
       count(*)
from t
group by codeGroup
order by codeGroup;

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...