2012-09-03 27 views
-1

我有桌面观众: id(int),unixtime(int),country(int),city(int),audience(int)。获取某段时间的统计信息

为不同城市和国家的抽象受众统计表的统计。不同城市和国家的不同时间统计数据每天收集数次。

在撰写查询时需要帮助,应该展现给观众对于每一个国家和城市

  1. 第一个和最后一个日期
  2. 的日期一定时期

输出应包含

  • country1,city1,unixtime,audience-min(unixtime)
  • COUNTRY1,city1,unixtime,观众 - MAX(unixtime)
  • COUNTRY1,城2,unixtime,观众 - 分钟(unixtime)
  • COUNTRY1,城2,unixtime,观众 - MAX(unixtime)
  • .. 。

或:

  • COUNTRY1,city1,begin_unixtime,begin_audience,end_unixtime,end_audience
  • ç ountry1,城2,begin_unixtime,begin_audience,end_unixtime,end_audience
  • ...

在此先感谢您的帮助。

+1

你能提供一些示例数据吗? –

回答

0

尝试这种解决方案:

SELECT b.country, 
     b.city, 
     b.unixtime AS begin_unixtime, 
     b.audience AS begin_audience, 
     c.unixtime AS end_unixtime, 
     c.audience AS end_audience  
FROM (
     SELECT MIN(id) AS minid, 
       MAX(id) AS maxid 
     FROM  audience 
     WHERE unixtime BETWEEN <start> AND <end> 
     GROUP BY country, 
       city 
     ) a 
JOIN audience b ON b.id = a.minid 
JOIN audience c ON c.id = a.maxid 

在这个解决方案中,最小/最大unixtime和观众都基于最小/最大id(第一和最后一行指定日期之间的插入),假设它是一个独特的自动递增int。

用您的日期范围替换<start><end>

+0

是的,它的工作原理。谢谢! –