[sqlite] : moy sur une valeur suite à une selection (résolu)

Ce qui ne concerne ni le forum ni des problèmes
Oldan
archer de cavalerie
Messages : 150
Inscription : lun. 18 oct. 2010, 10:39

[sqlite] : moy sur une valeur suite à une selection (résolu)

Message par Oldan »

Bonjour,

j'ai une table très simple (qui est alimentée toute les 5 secondes) :
Date
Valeur


Pour récupérer la valeur moyenne des 15 dernières secondes, je fais :

Code : Tout sélectionner

SELECT AVG(valeur) AS valeur_moyenne FROM table WHERE DATETIME(date) > DATETIME('NOW', '-15 seconds');
Seulement cette requête est très longue.
Mon idée est alors de récupérer les 3 dernières valeurs et d'en faire la moyenne.
La récup est très rapide

Code : Tout sélectionner

SELECT valeur FROM table ORDER BY date DESC LIMIT 0,3
Mais si j'en fais la moyenne, alors je me retrouve avec la moyenne globale de ma table :'(

Code : Tout sélectionner

SELECT AVG(valeur) FROM table ORDER BY date DESC LIMIT 0,3
Avez vous une idée de comment récupérer uniquement la moyenne des 3 dernières valeurs ?

Merci
Dernière modification par Oldan le lun. 18 nov. 2013, 22:43, modifié 2 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17618
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [sql (linte)] : moyenne sur une valeur suite à une selec

Message par benjarobin »

Utilise ta première requête en ajoutant un index sur la date
Ton champs / field est de quel type ?
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Oldan
archer de cavalerie
Messages : 150
Inscription : lun. 18 oct. 2010, 10:39

Re: [sql (linte)] : moyenne sur une valeur suite à une selec

Message par Oldan »

Merci beaucoup : c'est bien mieux.

Mais ca reste moins rapide que mon bête select des 3 dernières valeurs (je suis sur un minipc ARM, ca doit compter).
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17618
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [sql (linte)] : moyenne sur une valeur suite à une selec

Message par benjarobin »

C'est SQL lite ou linte que je ne connais pas ?
Si c'est du SQLite c'est normal que cela soit long, de plus avec un ARM
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Oldan
archer de cavalerie
Messages : 150
Inscription : lun. 18 oct. 2010, 10:39

Re: [sql (linte)] : moyenne sur une valeur suite à une selec

Message par Oldan »

méa coulpa : c'est bien sqlite. Je corrige mon titre.

Merci en tout cas.
Je ne sais pas si je passe en résolu : je ne sais pas si ce dont je parle au premier post est possible.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17618
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [sql (sqlite)] : moy sur une valeur suite à une selectio

Message par benjarobin »

Un truc comme ceci est possible avec Oracle, avec sqlite aucune idée

Code : Tout sélectionner

SELECT AVG(valeur) FROM (SELECT valeur FROM table ORDER BY date DESC LIMIT 0,3)
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Oldan
archer de cavalerie
Messages : 150
Inscription : lun. 18 oct. 2010, 10:39

Re: [sql (sqlite)] : moy sur une valeur suite à une selectio

Message par Oldan »

ca marche et c'est instantané(pour un humain) :) !!

Merci beaucoup je passe en résolu !
Répondre