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

Sybase Discussion :

[T-SQL]Utiliser le résusltat d'un count() dans Avg() directement


Sujet :

Sybase

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut [T-SQL]Utiliser le résusltat d'un count() dans Avg() directement
    Bonjour, je suis sur un problème de requête que je n'arrive pas à faire.
    Voici la structure de ma table :

    table maTable
    Champs 1 --> id
    Champs 2 --> donnee

    voici un exemple de ce que je peux trouver comme type d'enregistrements :

    champs 1 | champs 2
    ----------------------
    12455 | 60
    12455 | 65
    12455 | 72
    12454 | 32
    12454 | 34
    12453 | 18
    12453 | 20
    12453 | 25
    12453 | 35
    12453 | 46

    Voilà. Pour chaque groupe d'identifiant je voudrais avoir le nombre d'enregistrement par exemple ici pour 12455 il y a 3 enregistrements etc...
    Pour cela je fais cette requête :

    SELECT count(*) FROM maTable group by id
    j'obtient :

    id
    --
    3
    2
    5

    Ce que je n'arrive pas à faire c'est une moyenne sur ce résultat. J'ai essayer ca :

    SELECT Avg(SELECT count(*) FROM maTable group by id) FROM maTable

    SELECT Avg(nb_id) FROM maTable WHERE nb_id IN (SELECT count(*) as nb_id FROM maTable group by id)

    et plein d'autres choses mais j'ai des erreurs de syntaxe

    please help !
    merci d'avance à bientôt

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Est-ce que ceci te convient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select count(*) from table group by id
    compute avg(count(*))
    Attention - cette extension T-SQL (le compute) n'est pas compatible avec JDBC, donc ne peux pas être utililsée dans du code Java.

    Les alternatives:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -- vue materialisée - requiert 12.5.1
    select avg(cnt.c) from (select count(*) c from table group by id) cnt
    -- table temporaire - toutes les versions:
    select c = count(*) into #t from table group by id
    select avg(c) from #t
    Michael

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT count(*) FROM TABLE GROUP BY id
    compute avg(count(*))
    ceci ne foncitonne pas, c'est le qui pose problème.
    J'ai donc essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT count(*) as nb FROM TABLE GROUP BY id
    compute avg(nb)
    mais ca ne marche pas non plus.
    Par contre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT avg(cnt.c) FROM (SELECT count(*) c FROM TABLE GROUP BY id) cnt
    foncitonne très bien et très rapidement. Avec la table temporaire ca marche aussi mais mons rapide. Merci donc et bravo !

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

Discussions similaires

  1. Utilise la valeur d'une textbox dans une requête sql
    Par podidoo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/03/2006, 09h53
  2. Requete SQL : Utiliser 'AND' dans un DECODE
    Par LoulouFifi dans le forum Oracle
    Réponses: 2
    Dernier message: 02/12/2005, 09h26
  3. [forms]quel declencheur pl/sql utiliser?
    Par popov2 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 30/08/2005, 11h19
  4. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08
  5. [PL/SQL] Utilisation table PL/SQL dans clause IN
    Par Yorglaa dans le forum PL/SQL
    Réponses: 13
    Dernier message: 05/10/2004, 10h36

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