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

MS SQL Server Discussion :

[SQLSERVER2008] chercher le min d'une matrice


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut [SQLSERVER2008] chercher le min d'une matrice
    Bonjour,

    Je voulais obtenir le min de ma table pour chaque groupe de données.

    Par exemple ma table est comme suit :
    code col1 col2 col3 col4
    1 x1 x2 x3 x4
    1 x4 ...................
    1 x5 ...................
    2 x3 ...................
    2 ........................
    2 .........................
    Je veux retourner le min de la sous matrice en ligne et en colonne de chaque groupe.

    Merci de m'aider

  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Votre modèle de données ne respecte pas les principe de base de la modélisation. En effet, vous auriez du modéliser votre matrice ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE T_MATRICE_MTR
    (MTR_ID         INT NOT NULL PRIMARY KEY,
     MTR_NB_COL     SMALLINT CHECK (MTR_NB_COL > 0),
     MTR_NB_LIG     SMALLINT CHECK (MTR_NB_LIG > 0));
    GO 
     
    CREATE TABLE T_MATRICE_VALUE_MTV
    (MTV_ID         INT NOT NULL PRIMARY KEY T_MATRICE_MTR (MTR_ID),
     MTR_ID         INT NOT NULL FOREIGN KEY REFERENCES T_MATRICE_MTR (MTR_ID),
     MTV_COLONNE    SMALLINT NOT NULL CHECK (MTV_COLONNE > 0),
     MTV_LIGNE      SMALLINT NOT NULL CHECK (MTV_LIGNE > 0),
     MTV_VALUE      FLOAT);
    GO
    Dès lors vos requêtes deviennent simplissime et performantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -- obtenir le max de toutes les valeurs de chaque matrice :
    SELECT MTR_ID, MAX(MTV_VALUE)
    FROM   T_MATRICE_VALUE_MTV
    GROUP  BY MTR_ID
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -- obtenir le max de chaque ligne de chaque matrice :
    SELECT MTR_ID, MTR_LIGNE, MAX(MTV_VALUE)
    FROM   T_MATRICE_VALUE_MTV
    GROUP  BY MTR_ID, MTR_LIGNE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -- obtenir le max de chaque colonne de chaque matrice :
    SELECT MTR_ID, MTR_COLONE, MAX(MTV_VALUE)
    FROM   T_MATRICE_VALUE_MTV
    GROUP  BY MTR_ID, MTR_COLONNE
    Et pour une matrice particuliète il suffit de rajouter un filtre WHERE, comme ceci :
    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
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut
    Bonjour,

    Merci,

    Le problème est que la table est crée dans la base de cette façon.
    est ce je pourrai créer une autre avec le modèle de la matrice et y insérer les données !!!!

  4. #4
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    est ce je pourrai créer une autre avec le modèle de la matrice et y insérer les données !!!!
    Mais faites donc créez vos tables et un script permettant de migrer vos données...

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Par défaut
    Bonjour,

    Pour la création de la matrice, J'ai pas bien compris le rôle de la première table et la seconde T_MATRICE_VALUE_MTV.
    Et après la création, comment je copie les données de la table source (select from insert into ...).

    Merci de m'expliquer plus.

    En fait j'ai une trentaine de colonne et pour MTV_VALUE, les champs n'ont pas tous le même type (int,float,date), je veux avoir le min juste de la sous matrice pour les champs de type date !!!

    j'espère que j'étais clair .

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

Discussions similaires

  1. chercher le maximum dans certaines zones d'une matrice.
    Par Swiss_Knight dans le forum Octave
    Réponses: 1
    Dernier message: 07/06/2011, 10h16
  2. Réponses: 13
    Dernier message: 03/07/2009, 15h08
  3. chercher le maximum d'une matrice 2D
    Par poitou86 dans le forum C++
    Réponses: 4
    Dernier message: 29/05/2008, 14h41
  4. chercher un max et min dans une liste de type vector
    Par sandy07 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 29/05/2007, 15h23
  5. chercher un tableau dans une matrice
    Par devdébuto dans le forum C
    Réponses: 12
    Dernier message: 11/12/2005, 01h26

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