IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

demande optimisation si possible


Sujet :

HyperFileSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 34
    Par défaut demande optimisation si possible
    bonjour
    j'ai pu concevoir cette requête ci-dessous qui est fonctionnelle
    je voudrais avoir votre avis concernant une possible optimisation,
    la requête permet d'obtenir pour chaquelib_tabA son CA par mois sur une annee donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    SELECT 
    tableA.lib_tableA AS lib_tableA,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='01') THEN tableB.date.ca  ELSE  0  END) AS janvier,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='02') THEN tableB.date.ca  ELSE  0  END) AS FEVRIER,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='03') THEN tableB.date.ca  ELSE  0  END) AS MARS,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='04') THEN tableB.date.ca  ELSE  0  END) AS AVRIL,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='05') THEN tableB.date.ca  ELSE  0  END) AS  MAI,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='06') THEN tableB.date.ca  ELSE  0  END) AS JUIN,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='07') THEN tableB.date.ca  ELSE  0  END) AS JUILLET,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='08') THEN tableB.date.ca  ELSE  0  END) AS AOUT,
    SUM(CASE WHEN (SUBSTR(tableB.date,4,2)='09') THEN tableB.date.ca  ELSE  0  END) AS SEPTEMBRE,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='10') THEN tableB.date.ca  ELSE  0  END) AS OCTOBRE,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='11') THEN tableB.date.ca  ELSE  0  END) AS NOVEMBRE,
    SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='12') THEN tableB.date.ca  ELSE  0  END) AS DECEMBRE,
    SUM(tableB.date.ca) AS total
    FROM 
    tableA,	
    tableB
    WHERE 
    tableB.IDtableA	=	tableA.IDtableA
    AND
    (
    LEFT(tableB.date,4) = {Param1}
    )
    GROUP BY 
    tableA.lib_tableA
    ps:avec l’éditeur d’état de windev j'ai eu quelques difficultés à obtenir les date(mois) en lettre

  2. #2
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    Si ta requête est fonctionnelle, n'y touche pas. Elle est lisible et en plus ne semble pas te poser de souci de temps de traitement.

  3. #3
    Membre émérite Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Par défaut
    Bonjour,

    Je suis d'accord avec Claude, c'est propre, je ne suis pas sur que tu puisse optimiser ce code.

    Tu peux cependant proposer ton post dans un forum dédier a SQL:
    http://www.developpez.net/forums/f37...s/langage-sql/

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Bonjour,

    Je pense que tu pourrais faire quelque chose "de mieux" avec un GROUP BY ROLLUP si tu n'étais pas sous Hyperfile !

    Pour le reste ta requête est logique... juste une jointure normalisée SQL2 serait plus sympa et peut-être qu'un sum(decode(to_char(tableB.date,'MM')='01',tableB.date.ca,0)) serait plus compact et plus clair....

    Et juste une chose... étrange ce champ "tableB.date.ca" !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script demande optimisation
    Par BUENOO dans le forum Général Python
    Réponses: 42
    Dernier message: 29/02/2012, 18h02
  2. Optimisation curieuse/possible de base de données ?
    Par Ekimasu dans le forum Optimisations
    Réponses: 4
    Dernier message: 25/05/2007, 16h21
  3. Réponses: 5
    Dernier message: 20/08/2006, 02h55
  4. Possible d'optimiser (Plusieurs querys en 1 seule)??
    Par MadCat34 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2005, 16h25
  5. Optimiser une requête..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2005, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo