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 :

utiliser count dans min


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 14
    Par défaut utiliser count dans min
    Bonjour, voici la requête que j'ai passer et qui fonctionne tres bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(id) ,id_langue from projet group by id_langue
    et voici le resultas

    mon probleme c'est que je veux savoir le min du premier champ
    Savez-vous comment je peux faire ?

  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 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MIN(C) FROM (
    SELECT count(id) AS C, id_langue FROM projet GROUP BY id_langue
    ) AS T
    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 averti
    Inscrit en
    Mai 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 14
    Par défaut
    merci

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Il y a une écriture plus courte et vachement plus marrante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT TOP(1) min(count(*)) over()
    FROM projet 
    GROUP BY id_langue
    Et y a plein de gens qui vous diront que ça ne peut pas marcher

    EDIT: Et pas plus tard que ci plus loin dessous ^^

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Petite vision de la concurrence, Oracle Database supporte les agrégats imbriqués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      SELECT min(count(id))
        FROM projet
    GROUP BY id_langue;

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Oui, comme Sybase, ais cela est totalement illogique !
    En effet sur quoi porte le GROUP BY ?
    Normalement il devrait porter sur les deux agrégats et la requête devrait être équivalente à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(id)
        FROM projet
    GROUP BY id_langue;
    Car un min appliqué au même groupage c'est un min sur une seule valeur !

    C'est pourquoi ceci est totalement interdit par la norme SQL !

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

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Petite vision de la concurrence, Oracle Database supporte les agrégats imbriqués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      SELECT min(count(id))
        FROM projet
    GROUP BY id_langue;
    Le query que j'ai donné fonctionne tout à fait sur SQL Server

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Sergejack Voir le message
    EDIT: Et pas plus tard que ci plus loin dessous ^^
    Pas compris votre edit, où quelqu'un a dit que votre solution ne fonctionnait pas ?

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Pas compris votre edit, où quelqu'un a dit que votre solution ne fonctionnait pas ?
    Ben, Sql pro

    Sinon, il est vrai (et attendu) que ma requête est moins rapide, puisque je la construit sur des opérations pensés pour un usage bien plus large que celui que j'en fais.
    Néanmoins, la différence de performance est légère et donc, connaître cette formule pourrait bien servir (surtout si on veut tirer le réel parti d'un agrégat avec clause OVER).

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

Discussions similaires

  1. comment utiliser count(*) dans Run if
    Par zinabd dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 14/11/2011, 09h07
  2. comment utiliser SELECT COUNT dans ma fonction
    Par z_ahlam dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2009, 16h30
  3. utilisation de xsl:count dans un arbre à 3 noeuds
    Par meurdock56 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/07/2008, 15h58
  4. Réponses: 9
    Dernier message: 14/11/2007, 09h59
  5. Réponses: 2
    Dernier message: 20/12/2006, 16h12

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