服务器后台收集百万个设备来的数据,每个发来的是一个json树形结构,每个节点有名字,最终每个叶子带一个数据,收到一个大的表格里面。除去每个数据都包括的信息,比如国家,设备号,时间戳等,还有一个key/value对。某次数据,可能是{"code", 0-15 },下一行可能是{"a/b/c/", 0-63},然后是{"time", 多少秒}等。正常情况下,1个设备智能发出两个code =0, 2个a/b/c,两个time。下面是一些例子
1, A, test-channel, code, 0, 时间戳, ...
1, A, test-channel, code, 0, 时间戳, ...
1, A, test-channel, a, 1, 时间戳, ...
1, A, test-channel, c, 1, 时间戳, ...
1, A, test-channel, time, 50, 时间戳, ...
1, A, test-channel, time, 30, 时间戳, ...
2, A, test-channel, code, 0, 时间戳, ...
...
当然,id是每个设备都不一样的。如果上述的数量不对,则是设备端出了问题。比如如果100万个设备收到了201万个0,外加1000个5,那就是出了1万1千个问题。为了画图,我用的就是SQL语句。比如,要画code的分布饼图,就
select id, country, channel, name, value
where name = "code"
group by country, channel
...
上面的查询结果可以给一个工具画出一个饼图,按照code分类,显示每个分类多少数据。那么,大部分应该是0。而且一百万个设备应该由200万个0.当然,如果有问题,可能显示201万个0,外加一千个5.
现在老板说,要显示一个图描述code有多少问题。怎么算呢?我想, 既然100万个设备应该有200万个0,那么我能不能就在0的计数那个结果减去设备数乘以2?设备数就是id的个数。但是,我只想在code是0的那个组里减去设备数乘以2,其他的不减。这个操作在SQL里面能进行吗?
--
FROM 72.199.121.*