MySql,计算多个组,并创建视图

时间:2015-10-16 14:36:06

标签: mysql sql count subquery sql-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)

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

我遇到的问题是我无法弄清楚如何为每条路线做出这一点,包括所涉及的逻辑映射,而不为每个路由器构建10个子查询。

有没有更干净的方法呢?如果需要更多数据,我将提供。

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

1 个答案:

答案 0 :(得分:1)

我认为你想要条件聚合:

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;