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

Requêtes PostgreSQL Discussion :

Requetes avec des operateurs OLAP


Sujet :

Requêtes PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Requetes avec des operateurs OLAP
    Bonjour,
    je débute avec le SGBD PostgreSQL et je souhaitais savoir s'il y a une possibilité d'utiliser des opérateurs OLAP tels que "GROUP BY CUBE" ou "GROUP BY ROLLUP".

    Il s'agirait donc de faire des requêtes du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT year (order_date) AS Year, quarter (order_date) AS Quarter, 
    COUNT (*) AS Orders
    FROM sales_order
    GROUP BY ROLLUP (Year, Quarter)
    ORDER BY Year, Quarter
    Si quelqu'un a déjà travaillé sur cette problématique, je le remercie par avance pour son aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 735
    Points
    52 735
    Billets dans le blog
    5
    Par défaut
    Pas actuellement. C'est en discussion.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Pas actuellement. C'est en discussion.

    A +
    Merci pour ta réponse.
    Cependant que peut on faire avec PostgreSQL sur un entrepôt de données (sauf le construire et l'alimenter), est-il possible de simuler cette requête?
    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 735
    Points
    52 735
    Billets dans le blog
    5
    Par défaut
    OUI !

    --> début exemple agrégats OLAP --

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE T_VETEMENT (VET_TYPE   VARCHAR(8), VET_COULEUR VARCHAR(8), VET_TAILLE CHAR(4));
    GO
    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
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'rouge',     'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'vert',      'XXL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'rouge',     'L')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'blanc',     'L')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'blanc',     'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'noir',      'L')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'rouge',     'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'bleu',      'S')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'bleu',      'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'bleu',      'XXL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'blanc',     'L')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'noir',      'S')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'blanc',     'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'blanc',     'XXL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'rouge',     'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('chemise',  'noir',      'L')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'vert',      'XL')
    INSERT INTO T_VETEMENT (VET_TYPE,   VET_COULEUR, VET_TAILLE)
                    VALUES ('pantalon', 'noir',      'XL')
    --> démo ROLLUP

    -- total et sous totaux en une seule requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT VET_TYPE, VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR, VET_TAILLE WITH ROLLUP
    GO
    -- équivalence logique :
    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
    SELECT VET_TYPE, VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR, VET_TAILLE WITH ROLLUP
    UNION
    SELECT VET_TYPE, VET_COULEUR, NULL, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR
    UNION
    SELECT VET_TYPE, NULL, NULL, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE
    UNION
    SELECT NULL, NULL, NULL, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GO

    --> démo CUBE

    -- total et sous totaux de toutes les combinaisons possible en une seule requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT VET_TYPE, VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR, VET_TAILLE WITH CUBE
    ORDER  BY 1, 2, 3
    GO
    -- équivalence logique :
    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
    SELECT VET_TYPE, VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR, VET_TAILLE
    UNION
    SELECT VET_TYPE, VET_COULEUR, NULL AS VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_COULEUR
    UNION
    SELECT VET_TYPE, NULL AS VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE, VET_TAILLE
    UNION
    SELECT NULL AS VET_TYPE, VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_COULEUR, VET_TAILLE
    UNION
    SELECT VET_TYPE, NULL AS VET_COULEUR, NULL AS VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TYPE
    UNION
    SELECT NULL AS VET_TYPE, NULL AS VET_COULEUR, VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_TAILLE
    UNION
    SELECT NULL AS VET_TYPE, VET_COULEUR, NULL AS VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    GROUP  BY VET_COULEUR
    UNION
    SELECT NULL AS VET_TYPE, NULL AS VET_COULEUR, NULL AS VET_TAILLE, COUNT(*) AS NOMBRE
    FROM   T_VETEMENT
    ORDER  BY VET_TYPE, VET_COULEUR, VET_TAILLE
    GO
    Extrait du cours PSQ Orsys : http://www.orsys.fr/orsys.asp?cours=stage_0_PSQ
    que je donne régulièrement !


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [MySQL] Comparer le resultat d'une requete avec des fichiers
    Par Anakior dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/12/2005, 11h11
  2. [VB.NET] Requete avec des dates dans un DataSet
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/10/2005, 14h30
  3. Requetes avec des dates
    Par PrinceMaster77 dans le forum SQL
    Réponses: 1
    Dernier message: 22/11/2004, 17h46
  4. Creer une requete avec des LEFT JOIN et des GRO
    Par donbuz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/09/2004, 15h53
  5. Requete avec des décimales
    Par Sandrine75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/06/2003, 10h18

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