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

Langage SQL Discussion :

regrouper les données


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut regrouper les données
    Bonjour a tous. j'ai crée une query

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select cod_drg, drg_descr, Count(*)
    from detail_sdo
    where annee='2008' and mois='01'
    group by cod_drg, drg_descr
    cette query calcule la freq de chaque drg.

    comment je fais pour visualiser les 5 drg avec la freq la plus elevée et les autres les regrouper et calculer la freq?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Avec quel SGBD ? Quelle Version ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Avec quel SGBD ? Quelle Version ?
    J'utilise MySQL et Oracle.

    je suis arrivée à creer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select d.cod_drg, d.drg_descr, round(((count(*)/
    (select count(*) from detail_sdo d
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'))*100),2) as freq
    from detail_sdo d  
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'
    group by d.cod_drg, d.drg_descr
    order by freq desc
    j'ai esseie l'instruction limit e top mais ne marchent pas.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    Je suis arrivée a sortir les premier 5 lignes avec l'instruction LIMIT.
    mais ce que je voudrais faire est sortir un resultat comme ça:

    cod_drg drg freq
    015 xxxx 65
    250 vvvv 45
    450 tttt 30
    120 eeee 25
    012 rrrr 15
    Autres 32 (regroup tous les autres drg qui sont pas dans les premiers 5)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select d.cod_drg, d.drg_descr, round(((count(*)/
    (select count(*) from detail_sdo d
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'))*100),2) as freq
    from detail_sdo d  
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'
    group by d.cod_drg, d.drg_descr
    order by freq desc limit 5

    Citation Envoyé par Daniela Voir le message
    J'utilise MySQL et Oracle.

    je suis arrivée à creer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select d.cod_drg, d.drg_descr, round(((count(*)/
    (select count(*) from detail_sdo d
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'))*100),2) as freq
    from detail_sdo d  
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'
    group by d.cod_drg, d.drg_descr
    order by freq desc
    j'ai esseie l'instruction limit e top mais ne marchent pas.

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Tu as une requête qui te sort les 5 premiers, utilise là comme sous requêtes pour faire ressortir les autres champs !

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    j'utilise un not in?

    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    Tu as une requête qui te sort les 5 premiers, utilise là comme sous requêtes pour faire ressortir les autres champs !


  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Oui, ou un not exists.

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    moi j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT d.cod_drg, d.drg_descr, round(((count(*)/
    (SELECT count(*) FROM detail_sdo d
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'   not exists (SELECT d.cod_drg, d.drg_descr, round(((count(*)/
    (SELECT count(*) FROM detail_sdo d
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
    GROUP BY d.cod_drg, d.drg_descr
    ORDER BY freq1 DESC) as b
    GROUP BY d.cod_drg, d.drg_descr
    ORDER BY freq DESC
    mais ne marche pas :-(

    Citation Envoyé par Snipah Voir le message
    Oui, ou un not exists.

  9. #9
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Heureusement que le ridicule ne tue pas...
    Attention pour ceux qui feront des remarques déplacées, je peux rendre fou,
    la preuve :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    SELECT
           d.cod_drg
         , d.drg_descr
         , round((((count(*)/
                          (SELECT 
                                 count(*) 
                           FROM 
                                 detail_sdo d
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'))*100),2) AS freq
                           FROM 
                                 detail_sdo d  
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'
                             AND NOT IN 
                                       (SELECT 
                                              (*)
                                        FROM
                                             freq_5
                                       )
                            ) AS freq_All
        , round((((count(*)/
                          (SELECT 
                                 count(*) 
                           FROM 
                                 detail_sdo d
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'))*100),2) AS freq
                           FROM 
                                 detail_sdo d  
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'
                           ORDER BY 
                                    freq DESC LIMIT 5) AS freq_5
    FROM 
             detail_sdo d
    GROUP BY d.cod_drg
           , d.drg_descr
    ORDER BY 
                freq DESC
    ;
    Je sais mais c'est bientôt le week-end, soyez indulgent !!!
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  10. #10
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    cette query ne marche pas, il me dit qu'il y a un probleme au niveau de freq from detail_sdo.
    pourkoi?

    et j'ai pas compris pourkoi t'as mis deux fois cette partie de query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     SELECT 
                                 count(*) 
                           FROM 
                                 detail_sdo d
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'))*100),2) AS freq
    Citation Envoyé par Chtulus Voir le message
    Re,

    Heureusement que le ridicule ne tue pas...
    Attention pour ceux qui feront des remarques déplacées, je peux rendre fou,
    la preuve :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    SELECT
           d.cod_drg
         , d.drg_descr
         , round((((count(*)/
                          (SELECT 
                                 count(*) 
                           FROM 
                                 detail_sdo d
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'))*100),2) AS freq
                           FROM 
                                 detail_sdo d  
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'
                             AND NOT IN 
                                       (SELECT 
                                              (*)
                                        FROM
                                             freq_5
                                       )
                            ) AS freq_All
        , round((((count(*)/
                          (SELECT 
                                 count(*) 
                           FROM 
                                 detail_sdo d
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'))*100),2) AS freq
                           FROM 
                                 detail_sdo d  
                           WHERE  
                                 d.anne='2008' 
                             AND d.mois='01'  
                             AND cdc LIKE '31464S503' 
                             AND cat_0='ORD'
                           ORDER BY 
                                    freq DESC LIMIT 5) AS freq_5
    FROM 
             detail_sdo d
    GROUP BY d.cod_drg
           , d.drg_descr
    ORDER BY 
                freq DESC
    ;
    Je sais mais c'est bientôt le week-end, soyez indulgent !!!

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Peut être comme ça?
    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
    SELECT d.cod_drg, d.drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
    GROUP BY d.cod_drg, d.drg_descr
    ORDER BY freq DESC LIMIT 5
    UNION ALL
    SELECT 'autres drg', 'autres descr', round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
    and not exists
    (
     SELECT 1
     FROM
     (
      SELECT d.cod_drg, d.drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
      FROM detail_sdo d  
      WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
      GROUP BY d.cod_drg, d.drg_descr
      ORDER BY freq DESC LIMIT 5
     ) d2
    inner join d
    on d.cod_drg = d2.cod_drg
    and d.drg_descr = d2.drg_descr
    )

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    no, il me dit incorret usage de union and order by.

    moi j'ai reflechi et je pense que c'est mieux de faire une query qui visualise la frequence seulement des "drg" regroupées. moi j'ai fais ça mais ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select count(*)
    from detail_sdo
    where d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD' and not in (
    select d.cod_drg, d.drg_descr, round(((count(*)/
    (select count(*) from detail_sdo d
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'))*100),2) as freq
    from detail_sdo d
    where  d.anne='2008' and d.mois='01'  and cdc like '31464S503' and cat_0='ORD'
    group by d.cod_drg, d.drg_descr
    order by freq desc limit 5 )
    pourkoi?



    Citation Envoyé par Snipah Voir le message
    Peut être comme ça?
    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
    SELECT d.cod_drg, d.drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
    GROUP BY d.cod_drg, d.drg_descr
    ORDER BY freq DESC LIMIT 5
    UNION ALL
    SELECT 'autres drg', 'autres descr', round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
    FROM detail_sdo d  
    WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
    and not exists
    (
     SELECT 1
     FROM
     (
      SELECT d.cod_drg, d.drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
      FROM detail_sdo d  
      WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
      GROUP BY d.cod_drg, d.drg_descr
      ORDER BY freq DESC LIMIT 5
     ) d2
    inner join d
    on d.cod_drg = d2.cod_drg
    and d.drg_descr = d2.drg_descr
    )

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Renseigne toi sur l'utilisation de la clause NOT IN. Tu devrais facilement trouver dans les tutoriels SQL de ce site.

    En passant, tu peux essayer comme ça :
    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
    27
    28
    29
    30
    SELECT * FROM
    (
     SELECT d.cod_drg as cod_drg, d.drg_descr as drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
     FROM detail_sdo d  
     WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
     GROUP BY d.cod_drg, d.drg_descr
     ORDER BY freq DESC LIMIT 5
    )
    UNION ALL
    SELECT * FROM
    (
     SELECT 'autres drg' as cod_drg, 'autres descr' as drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
     FROM detail_sdo d  
     WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
     AND NOT EXISTS
     (
      SELECT 1
      FROM
      (
       SELECT d.cod_drg, d.drg_descr, round(((count(*)/(SELECT count(*) FROM detail_sdo d WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'))*100),2) AS freq
       FROM detail_sdo d  
       WHERE  d.anne='2008' AND d.mois='01'  AND cdc LIKE '31464S503' AND cat_0='ORD'
       GROUP BY d.cod_drg, d.drg_descr
       ORDER BY freq DESC LIMIT 5
      ) d2
      INNER JOIN d
      ON d.cod_drg = d2.cod_drg
      AND d.drg_descr = d2.drg_descr
     )
    )

  14. #14
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par Daniela Voir le message
    no, il me dit incorret usage de union and order by.
    Ca c'est parce que tu ne peux pas unir 2 sous-requêtes ordonnées (snipah, ce coup si je suis sûr )
    Il te faut un seul ORDER BY, en fin de requête.

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    Donc il faut mettre order by à la fin de ma query, aprés la sous_requete?
    Mais si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by freq desc limit 5
    hors la sous requete j'obtien pas ce que je veux. moi je voudrais exclur du calcul des freq, les premiere cinque les plus elevées.

    Citation Envoyé par skuatamad Voir le message
    Ca c'est parce que tu ne peux pas unir 2 sous-requêtes ordonnées (snipah, ce coup si je suis sûr )
    Il te faut un seul ORDER BY, en fin de requête.

  16. #16
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Il faut que votre requete fonctionne sous Oracle et MySQL ???
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  17. #17
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    sous tout les deux s'il est possibile, sinon su mysql

    Citation Envoyé par Yanika_bzh Voir le message
    Il faut que votre requete fonctionne sous Oracle et MySQL ???

  18. #18
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    L'utilisation de syntaxe propriétaire va rendre difficile votre portabilité.

    Ou en etes-vous exactement dans votre problème actuellement apres les interventions de tous les participants ?
    Avez vous un jeu de données a soumettre ?

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Ca c'est parce que tu ne peux pas unir 2 sous-requêtes ordonnées (snipah, ce coup si je suis sûr )
    Il te faut un seul ORDER BY, en fin de requête.
    En théorie oui, et c'est la norme SQL.
    Pourtant, Oracle accepte des requêtes en contenant plusieurs, comme dans cet exemple un peu moche qui fonctionne sous Oracle :
    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
    select * from
    (
     select * from
     (
      select 3 as val from dual
      union all
      select 2 as val from dual
      union all
      select 1 as val from dual
     )
     order by val
    )
    union all 
    select * from
    (
     select 5 as val from dual
     union
     select 4 as val from dual
     order by val
    )
    Donc à moins que quelque chose ne m'échappe, Oracle ne respecte pas cette norme

  20. #20
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2006
    Messages : 446
    Points : 89
    Points
    89
    Par défaut
    moi j'ai cree cette query

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select count(*)
    from dettaglio_sdo
    where d.anno='2008' and d.mese='01'  and cdc like '31464S503' and cat_0='ORD' and not in (
    select d.cod_drg, d.drg_descr, round(((count(*)/
    (select count(*) from dettaglio_sdo d
    where  d.anno='2008' and d.mese='01'  and cdc like '31464S503' and cat_0='ORD'))*100),2) as freq
    from dettaglio_sdo d
    where  d.anno='2008' and d.mese='01'  and cdc like '31464S503' and cat_0='ORD'
    group by d.cod_drg, d.drg_descr
    order by freq desc limit 5 )
    sous MYSQL. la sous requete calcule les freq des 'DRG' et visualise les 5 avec la freq la plus elevée. la query initiale calcule la freq de tous les 'DRG'. ce que je veux est de visualiser la freq de tous les drg exclut les 5 premier.
    mais la query que j'ai fais ne marche pas...



    Citation Envoyé par Snipah Voir le message
    En théorie oui, et c'est la norme SQL.
    Pourtant, Oracle accepte des requêtes en contenant plusieurs, comme dans cet exemple un peu moche qui fonctionne sous Oracle :
    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
    select * from
    (
     select * from
     (
      select 3 as val from dual
      union all
      select 2 as val from dual
      union all
      select 1 as val from dual
     )
     order by val
    )
    union all 
    select * from
    (
     select 5 as val from dual
     union
     select 4 as val from dual
     order by val
    )
    Donc à moins que quelque chose ne m'échappe, Oracle ne respecte pas cette norme

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Regrouper les données de plusieurs feuilles dans une
    Par djinero dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/10/2011, 23h47
  2. [MySQL] regrouper les données d'une base par date
    Par lisa.a dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/01/2010, 10h29
  3. Regrouper les données d'un tableau dans un String
    Par xeak2008 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 12/11/2009, 11h02
  4. Regrouper les données par rapport à la date
    Par goldeagle dans le forum Access
    Réponses: 7
    Dernier message: 11/12/2006, 15h35
  5. [MySQL] regrouper les données sous un format différent
    Par Erakis dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/01/2006, 15h11

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