Supposons que nous ayons les tableaux suivants, avec les colonnes comme indiqué:
SELECT datepart(week, START_TIME), COUNT(RIDE_ID)
FROM RIDES
WHERE is completed = 'Y' AND ride_region ='San Francisco' AND
datepart(week, START_TIME) <= 12
group by `datepart(week, START_TIME)`;
Écrivez une requête que nous pourrions utiliser pour créer un graphique du nombre total de courses effectuées dans notre région de San Francisco , pour chaque semaine au cours des 12 dernières semaines.
J'ai utilisé datepart pour obtenir le décompte pour chaque semaine. Mais je ne sais pas comment inclure la clause qui affiche les 12 dernières semaines de TODAY . Mon code donnera un décompte pour la semaine 1 à 12 à partir de la première heure de début.
Veuillez vérifier mon code et me corriger.
Rides
ride_id
start_time
end_time
passenger_id
driver_id
ride_region
is_completed (Y/N)
Drivers
driver_id
onboarding_time
home_region
J'attends une sortie de compte pour les 12 dernières semaines en fonction de la semaine.
3 Réponses :
Au lieu de:
AND START_TIME > current_date - interval '84 day'
utilisez ceci
AND datepart(week, START_TIME) <= 12
car vous voulez que toutes les lignes des 12 dernières semaines = 84 jours
et grouper par datepart (semaine, START_TIME)
Si vous voulez les 12 dernières semaines à partir de la date_actuelle
SELECT datepart(week, START_TIME), COUNT(RIDE_ID)
FROM RIDES
WHERE is completed = 'Y'
AND ride_region ='San Francisco'
AND datepart(week, START_TIME) between (date_trunc('week', current_date) -12)
AND date_trunc('week', current_date)
group by datepart(week, START_TIME);
C'est un peu compliqué, car vous ne voulez probablement pas de semaines partielles. Donc, soustraire 12 semaines (ou 84 jours) peut ne pas être suffisant.
Je recommanderais une logique plus comme ceci:
where start_time >= date_trunc('week', curdate()) - interval '12 week') and
start_time < date_trunc('week', curdate())
Cela donne les 12 dernières pleines semaines de données, basées sur des semaines calendaires.
Vous avez déjà décidé d'utiliser la définition canonique de la semaine, c'est donc logique. Sinon, vous pouvez avoir la définition de la semaine commençant n'importe quel jour de la semaine.