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

Développement SQL Server Discussion :

Analyse de données avec SQL


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Points : 47
    Points
    47
    Par défaut Analyse de données avec SQL
    Bonjour je travaille sur un projet d'analyse des ventes a partir d'une table qui enregistre les opérations faites pour chaque agent , on veut partir de la forme table sql ligne par ligne (à gauche) à la forme résultat matrice à droite à l'aide de requêtes sous SQL SERVER
    Nom : analyse de données sql.jpg
Affichages : 233
Taille : 95,6 Ko

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour faire une recherche sur mot clef PIVOT / CROSS TABLE ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    essayer a la prochaine de postuler le script du creation du table ca facilite les choses

    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
    create table #test
    (code_option varchar(10)
    ,agent char(2)
    ,exercice int 
    ,unite int
    )
     
    insert into #test values ('op100','a1','2019','5')
    insert into #test values ('op101','a2','2020','15')
    insert into #test values ('op102','a3','2018','10')
    insert into #test values ('op103','a2','2016','8')
    insert into #test values ('op104','a4','2017','5')
    insert into #test values ('op105','a1','2019','10')
    insert into #test values ('op107','a3','2019','5')
    insert into #test values ('op107','a4','2016','10')
    insert into #test values ('op108','a3','2015','20')
    insert into #test values ('op109','a2','2020','5')
    insert into #test values ('op110','a1','2018','6')
     
    select distinct(agent)
    ,sum(case when exercice='2020' then unite else 0 end) as '2020'
    ,sum(case when exercice='2019' then unite else 0 end) as '2019'
    ,sum(case when exercice='2018' then unite else 0 end) as '2018'
    ,sum(case when exercice='2017' then unite else 0 end) as '2017'
    ,sum(case when exercice='2016' then unite else 0 end) as '2016'
    ,sum(case when exercice='2015' then unite else 0 end) as '2015'
    FROM #test 
    group by  agent

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Points : 47
    Points
    47
    Par défaut
    Merci Boubou2020
    y'a t'il un moyen à optimiser la requête de façon a ne pas spécifier une ligne de 'sum' pour chaque exercice ?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Quelque soit la solution, avec PIVOT ou non, la réponse est non.

    D'ailleurs ce genre de chose n'est pas à faire sur un SGBDR, mais avec des outils clients tels que Excel ou les suites décisionnelles du type PowerPivot ou autre.

    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/ * * * * *

  6. #6
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    avec PIVOT

    Je ne sais pas si j'ai fait la bonne méthode pour enlever les valeur Null suite a la function Pivot mais bon

    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
    create  table #test
    (code_option varchar(10)
    ,agent char(2)
    ,exercice int 
    ,unite int
    )
     
    insert into #test values ('op100','a1','2019','5')
    insert into #test values ('op101','a2','2020','15')
    insert into #test values ('op102','a3','2018','10')
    insert into #test values ('op103','a2','2016','8')
    insert into #test values ('op104','a4','2017','5')
    insert into #test values ('op105','a1','2019','10')
    insert into #test values ('op107','a3','2019','5')
    insert into #test values ('op107','a4','2016','10')
    insert into #test values ('op108','a3','2015','20')
    insert into #test values ('op109','a2','2020','5')
    insert into #test values ('op110','a1','2018','6')
     
     with cte 
     as(
    SELECT distinct(agent),   
    [2020], [2019], [2018], [2017], [2016]  , [2015] 
    FROM  
    (SELECT  distinct(agent),exercice,unite
        FROM  #test ) AS SourceTable  
    PIVOT  
    (  
    SUm(unite)
    FOR  exercice IN ([2020], [2019], [2018], [2017], [2016]  , [2015] )  
    ) AS PivotTable   
    ) select distinct(agent), isnull([2020],0)as '2020',isnull([2019],0)as '2019',isnull([2018],0)as '2018',isnull([2017],0)as '2017',isnull([2016],0)as '2016' from cte

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Points : 47
    Points
    47
    Par défaut
    Merci Boubou2020
    je parle d'une optimisation qui n'a pas besoin de dénombrer les colonnes des année ; on peut avoir 20 , 30 colonne , quelque chose comme distinct ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2008, 09h33
  2. charger des données avec SQL LOADER
    Par jeunot0108 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 21/08/2007, 08h52
  3. Synchronisation des Données avec SQL Server 2005
    Par attouchi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/07/2006, 16h14
  4. exo base de donnée avec SQL
    Par chti_juanito dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/11/2005, 16h02

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