我的数据具有我可以假设的逻辑分组,但我无法弄清楚如何根据我的需要正确地构建视图。我不拥有数据提供程序,只读数据库。我无法控制提供的内容,我只需要提供一些计数
逻辑地图
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秒更新一次,此时应使用路由器的已用/总计数更新视图。我只关心计数,而不是数据本身。
答案 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;