• [^] # Re: GROUP BY

    Posté par . En réponse au message Requêtes SQL. Évalué à 1.

    Bonjour,

    Pour la première requête, ça ne marche pas.

    Création des tables avec les valeurs :

    CREATE TABLE donnees
    (
     id bigserial NOT NULL,
     status smallint,
     valeur integer,
     CONSTRAINT donnees_pkey PRIMARY KEY (id )
    )
    INSERT INTO donnees (status, valeur) VALUES ('0', '30');
    INSERT INTO donnees (status, valeur) VALUES ('0', '65');
    INSERT INTO donnees (status, valeur) VALUES ('0', '20');
    INSERT INTO donnees (status, valeur) VALUES ('7', '25');
    INSERT INTO donnees (status, valeur) VALUES ('0', '25');
    CREATE TABLE status_list
    (
     id bigserial NOT NULL,
     status smallint,
     libelle text,
     CONSTRAINT status_list_pkey PRIMARY KEY (id )
    )
    INSERT INTO status_list (status, libelle) VALUES ('0', '--');
    INSERT INTO status_list (status, libelle) VALUES ('1', '--');
    INSERT INTO status_list (status, libelle) VALUES ('2', '--');
    INSERT INTO status_list (status, libelle) VALUES ('3', '--');
    INSERT INTO status_list (status, libelle) VALUES ('4', '--');
    INSERT INTO status_list (status, libelle) VALUES ('5', '--');
    INSERT INTO status_list (status, libelle) VALUES ('6', '--');
    INSERT INTO status_list (status, libelle) VALUES ('7', '--');
    INSERT INTO status_list (status, libelle) VALUES ('8', '--');
    INSERT INTO status_list (status, libelle) VALUES ('9', '--');
    
    

    La requête :

    SELECT
     s.status
     , COUNT(*)
    FROM
     status_list s
    LEFT JOIN
     donnees d ON d.status=s.status
    GROUP BY 
     s.status
    ;
    
    

    me renvoi :

    0;4
    1;1
    2;1
    3;1
    4;1
    5;1
    6;1
    7;1
    8;1
    9;1