MySql,统计多个组,并创建一个视图

MySql, Counting multiple groups, and creating a view

我的数据具有我可以假设的逻辑分组,但我一直无法弄清楚如何根据我的需要正确制作视图。我不拥有数据提供者,只是在读取数据库。我无法控制所提供的内容,我只需要提供一些计数


逻辑图

name like "TL-3%" = MGrid_N53

name like "TL-P1%" = MGrid2_MGrid

name like "TL-P2%" = MGrid_MGrid2

等等,(10组)

我想创建一个像这样的视图 (路线将 = 到上面的映射逻辑,IE MGrid_N53)

select route, 
   (select count(*) 
    from table_name 
    where name like "Tl-3%"), 
   (select count(*) 
    from table_name 
    where name like "TL-3%" and source is not null)

第一列是正在使用的路由器。第二列是可用的路由器总数,第三列表示使用了多少。

我遇到的问题是,如果不为每个路由器构建 10 个子查询,我无法弄清楚如何针对每条路由执行此操作,其中涉及逻辑映射。

有没有更简洁的方法来做到这一点?如果需要更多数据,我会提供。

数据将每 10 秒更新一次,此时应使用路由器的 used/total 计数更新视图。我只关心计数,而不关心数据本身。

我想你想要条件聚合:

select (case when name like 'Tl-3%' then 'MGrid_N53' 
             when name like 'TL-P1%' then 'MGrid2_MGrid'
             . . .
        end) as route,
       count(*) as num,
       count(source) as num_withsource
from table_name
group by route;