-1

テーブルAudienceがあります:id(int)、unixtime(int)、country(int)、city(int)、audience(int)。

テーブルの任命-さまざまな都市や国の抽象的な聴衆の統計を保持します。統計は、1日に数回、さまざまな都市や国のさまざまな時間に収集されます。

クロスカントリーや都市ごとに視聴者を表示するクエリを作成する際にサポートが必要

  1. 最初と最後の日付
  2. 一定期間

出力には次のものが含まれている必要があります

  • country1、city1、unixtime、オーディエンス-min(unixtime)
  • country1、city1、unixtime、オーディエンス-max(unixtime)
  • country1、city2、unixtime、オーディエンス-min(unixtime)
  • country1、city2、unixtime、オーディエンス-max(unixtime)
  • ..。

また:

  • country1、city1、begin_unixtime、begin_audience、end_unixtime、end_audience
  • country1、city2、begin_unixtime、begin_audience、end_unixtime、end_audience
  • ..。

よろしくお願いします。

4

1 に答える 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

このソリューションでは、最小/最大UNIX時間とオーディエンスは、最小/最大id(指定された日付の間に挿入された最初と最後の行)に基づいており、一意の自動インクリメント整数であると想定しています。

<start><end>を日付範囲に置き換えます。

于 2012-09-03T18:07:42.213 に答える