获取特定时期的统计信息

时间:2012-09-03 17:49:54

标签: mysql

我有桌子观众: id(int),unixtime(int),country(int),city(int),audience(int)。

表的任命 - 保存不同城市和国家的一些抽象受众的统计数据。统计数据每天收集几次,不同时间针对不同的城市和国家。

在编写查询时需要帮助,该查询应显示每个越野和城市的受众

  1. 第一个和最后一个日期
  2. 一段特定时间
  3. 输出应包含

    • country1,city1,unixtime,audience - min(unixtime)
    • country1,city1,unixtime,audience - max(unixtime)
    • country1,city2,unixtime,audience - min(unixtime)
    • country1,city2,unixtime,audience - max(unixtime)
    • ...

    或:

    • country1,city1,begin_unixtime,begin_audience,end_unixtime,end_audience
    • country1,city2,begin_unixtime,begin_audience,end_unixtime,end_audience
    • ...

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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>替换为您的日期范围。