1
votes

Nombre de courses chaque semaine au cours des 12 dernières semaines

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.


0 commentaires

3 Réponses :


1
votes

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)


0 commentaires

1
votes

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);


0 commentaires

0
votes

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.


0 commentaires