2016-06-07 77 views
0

对于mysql来说很新,并且很难制定这种类型的查询。mysql如何从多个数据中提取数据并总结

下一个表(表称为TableX的),让我们说结构如下

server  date   numberofUser 
server1 timestamp  3 
server2 timestamp  2 
server3 timestamp  7 
server1 timestamp  2 
server2 timestamp  8 
server3 timestamp  4 

像... ..等等

我知道我可以做简单的 选择总和(numberofUser)从tableX其中服务器像'server1'按时间戳顺序desc限制100; 以获得服务器1的最后100个时间戳的用户总数

但是,您将如何为所有3台服务器执行此操作?我想为每个服务器的100个时间戳记汇总所有3个服务器的结果。只是不太确定如何执行此操作。请帮忙。

+0

的[获取前n个记录每个组分组结果]可能的复制(http://stackoverflow.com/questions/12113699 /获取最多n个记录为每组分组的结果) – Shadow

+0

你不能在服务器上运行sql :(你必须使用一些programatic中介 –

+0

我会检查出这个帖子..并且是的,这只是从一个SQL服务器(在一张桌子下) – user3502374

回答

1

使用由

select sum(numberofUser) , server 
from tableX 
group by server 

,并限制你的时间周期组

select sum(numberofUser) , server 
from tableX 
where timestamp between 'your_date_min' AND 'your_date_max' 
group by server 

所有服务器的总简直是

select sum(numberofUser) 
from tableX 

在过去的10列Server1和Server2上的

驻颜为单个服务器

select sum(numberofUser), server from (
    (select server, date, numberofUser from tableX 
    where server = 'server1' 
    order by date limit 10) 
    union 
    (select server, date, numberofUser from tableX 
    where server = 'server2' 
    order by date limit 10)) as t 
group by server 

或全为2服务器

select sum(numberofUser) from (
    (select server, date, numberofUser from tableX 
    where server = 'server1' 
    order by date limit 10) 
    union 
    (select server, date, numberofUser from tableX 
    where server = 'server2' 
    order by date limit 10)) as t 
+0

你会如何添加它们?而不是服务器,如何总结所有服务器的总数? – user3502374

+0

你需要所有服务器的总数? .. – scaisEdge

+0

无论如何,我已经更新了答案..希望这是你正在寻找..这可能会回答对你有用。 – scaisEdge

相关问题