2012-09-03 6 views
-1

J'ai une table Public: id (int), unixtime (int), pays (int), ville (int), audience (int). La désignation des statistiques de tenue de table pour certains publics abstraits pour différentes villes et différents pays. Les statistiques sont collectées plusieurs fois par jour, à des moments différents selon les villes et les pays.Obtenir des statistiques pour une certaine période

Besoin d'aide dans la composition de requête, qui devrait montrer au public pour chaque cross-country et la ville

  1. pour la première et la dernière date
  2. pour une certaine période de dates

sortie devrait contient

  • pays1, ville1, unixtime, audience - min (unixtime)
  • pays1, city1, unixtime, public - max (unixtime)
  • pays1, city2, unixtime, public - min (unixtime)
  • pays1, city2, unixtime, public - max (unixtime)
  • .. .

ou:

  • pays1, city1, begin_unixtime, begin_audience, end_unixtime, end_audience
  • c ountry1, city2, begin_unixtime, begin_audience, end_unixtime, end_audience
  • ...

Merci d'avance pour votre aide.

+1

Pouvez-vous fournir des exemples de données? –

Répondre

0

Essayez cette solution:

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 

Dans cette solution, le min/max unixtime et le public sont basés sur le min/max id (première et dernière ligne insérée entre les dates spécifiées), en supposant qu'il est un int auto-incrémenté unique. Remplacez <start> et <end> par votre période.

+0

Oui, cela fonctionne. Je vous remercie! –

Questions connexes