SELECT tous les n enregitrements d'une table

SELECT tous les n enregitrements d'une table - SQL/NoSQL - Programmation

Marsh Posté le 05-06-2013 à 21:47:22    

Bonjour
 
Je voudrais savoir s'il est possible de remonter par le biais d'un SELECT en MYSQL 1 valeur toutes les 10 valeurs..
 
Je m'explique. J'ai une table de relevés de température qui contient beaucoup de valeurs. Or je voudrais remonter qu'une valeur sur 10..
 
Un chart à la journée, c'est pertinent d'avoir des valeurs toutes les 10 minutes, sur 1 mois, 1 valeur sur 10 me conviendrait tout à fait
 
Merci d'avance

Reply

Marsh Posté le 05-06-2013 à 21:47:22   

Reply

Marsh Posté le 06-06-2013 à 08:04:31    

:hello: !
 
Je dirais que tout dépend déjà de ton SGDBR [:spamafote], et de tes colonnes présentes dans ta table.


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 06-06-2013 à 08:45:00    

Je pense que tu devrais faire quelque chose comme ça :
 
 

SELECT TEMPERATURE, DATE, ...
FROM (SELECT TEMPERATURE, DATE, ..., ROWNUM AS NUM_LIG
      FROM (SELECT TEMPERATURE, DATE, ...
            FROM TABLE_TEMPERATURE
            WHERE ???
            ORDER BY DATE))
WHERE MOD(NUM_LIG,10) = 1


 
 
En gros dans la "première" requête, tu récupères tes données ordonnées (ORDER BY DATE), puis tu les re-sélectionnes en y apposant le ROWNUM (numéro de ligne) et enfin tu les re-sélectionnes en ne prennant que les lignes ayant un MODULO 10 qui soit égal à 1 (soient les lignes 1, 11, 21, 31, 41...)


---------------
Miagic
Reply

Marsh Posté le 06-06-2013 à 09:10:26    

Point de vue perf tu devrais mettre les 1 valeur sur 10 dans une autre table, ca evitera au server de recalculer des choses identique a chaque fois.
 
Tu peux aussi faire des Avg des 10 valeurs, tu éviteras certaines aberations ou piques (si il y en a).

Reply

Marsh Posté le 12-06-2013 à 14:07:17    

Je pense que la moyenne est une bonne chose, après si tu cherches uniquement de la perf, si tu as une colonne "id" avec un AI, tu peux suivre la méthode de Miagic en faisant :

Code :
  1. SELECT ID,TEMPERATURE, DATE, ...
  2. FROM TABLE_TEMPERATURE
  3. WHERE MOD(ID,10) = 1

Reply

Marsh Posté le 12-06-2013 à 16:27:34    

Ca marche pas avec les ID s'il y a des suppressions, donc des trous dans la numérotation :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed