2017-02-14 3 views
0

J'ai une table qui suit le kilométrage de 10 véhicules toutes les heures tous les jours dans une base de données Oracle. Par exemple:sélectionnez la valeur à partir de la date avant 9h tous les jours

Car | Mileage| Timestamp 
Honda | 23.4| 11-Jan-17 08.00.00.000000 AM 
Honda | 22| 11-Jan-17 09.00.00.000000 AM 
Honda | 21.3 | 11-Jan-17 10.00.00.000000 AM 
Honda | 24.4| 11-Jan-17 11.00.00.000000 AM 
Honda | 23.2| 12-Jan-17 08.00.00.000000 AM 
Honda | 25| 12-Jan-17 09.00.00.000000 AM 
Honda | 26| 12-Jan-17 10.00.00.000000 AM 

Je ne comprends pas comment je peux écrire une requête pour exécuter ce travail quotidien pour 1 dernières années de données et sélectionner un certain kilométrage pour chaque voiture avant 9 heures tous les jours

+0

OK, un certain nombre de choses. Vous avez probablement plus d'une voiture, alors pourquoi toutes sont-elles identiques dans vos données d'échantillon? Alors - est-ce que "avant 9h" inclut 9h lui-même, ou est-il exclu? Et que veut dire "avant 9h" de toute façon - entre minuit et 9h du matin? ou 9h un jour jusqu'à 9h le lendemain? – mathguy

+0

oui il y a plusieurs voitures et 9h est exclu. Je veux récupérer le kilométrage pour la date la plus proche de 9h mais entre minuit et 9h – Samyy

Répondre

0

En supposant que vous voulez dire kilométrage plus tard à minuit et avant 09h00, alors ce qui suit fera le travail et aussi faire face à d'autres marques de voitures.

WITH base_data AS 
(SELECT car, mileage, read_date , ROW_NUMBER() OVER(PARTITION BY car,TRUNC(READ_DATE) ORDER BY read_date DESC) as ranking 
    FROM wg_test 
    WHERE EXTRACT (HOUR FROM read_date) BETWEEN 0 AND 8 
    AND read_date > SYSDATE - 365) 
SELECT car, mileage, read_date 
    FROM base_data 
WHERE ranking = 1 
+0

Oui je veux le kilométrage pour l'horodatage le plus proche de 9h. Je crois que cette requête va extraire toutes les heures entre minuit et 9h du matin? Ma colonne de date est dans le type de données d'horodatage – Samyy

+0

Vous dites que 9 heures est exclu. . . Ainsi, vos données de test ne peuvent afficher qu'une seule ligne par jour. – BriteSponge

+0

Oui, je veux exclure 9h et je veux montrer 1 enregistrement par jour (le record le plus proche de 9h) – Samyy