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

Requêtes et SQL. Discussion :

Requête Top 5 des appels


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut Requête Top 5 des appels
    Bonjour,

    Je développe une application qui permet d'analyser le trafic téléphonique.
    J'ai un fichier XML qui contient tous les appels détaillés.
    J'ai importer ce fichier dans une base Access, que j'exploite avec un applicatif que je code en C++ avec Qt Creator.

    Je voudrais réaliser un top 5 des numéros les plus présents dans ma base.
    Je souhaiterais savoir quelle est la requête qui me permettrait d'arriver à mes fins.

    Pinjul

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut,

    si la table est:
    NUMTEL(ID_NUMTEL, NUMTEL)

    tu peux essayer la requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 5 NUM_TEL, COUNT(NUM_TEL) AS COMPTEDENUM_TEL
    FROM NUMTEL
    GROUP BY NUM_TEL
    ORDER BY COUNT(NUM_TEL) DESC;

    cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci d'avoir répondu aussi vite.

    Ma table s'appelle CallAcounting et elle contient les champs suivants:
    Nom, NumeroInterne, TypeAppel, NumeroInterlocuteur, DateAppel, HeureAppel et DureeAppel.

    Si je comprends bien la requête serait la suivante:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 5 NumeroInterlocuteur, COUNT(NumeroInterlocuteur) AS COMPTEDENumeroInterlocuteur
    FROM CallAcounting
    GROUP BY NumeroInterlocuteur
    ORDER BY COUNT(NumeroInterlocuteur) DESC;

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Oui, c'est ça.

    Le COMPTEDENumeroInterlocuteur c'est juste le nom du champ, que tu peux modifier.

    Remarque: ta table ne semble pas avoir de clé primaire. Perso, je met toujours un champ clé primaire en NuméroAuto, c'est plus conforme aux règles!

    Cordialement

  5. #5
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Le COMPTEDENumeroInterlocuteur c'est juste le nom du champ, que tu peux modifier.
    Il s'agit du nom de quel champ ? Je ne comprends pas très bien.

    Il y a un soucis, la requête m'affiche plus de 5 numéros..

    Je viens de comprendre.. Il m'affiche tous les numéros différents dans l'ordre où ils sont les plus utilisés, mais je veux seulement les 5 premiers numéros les plus utilisé.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    On pourrait écrire:
    COUNT(NumeroInterlocuteur) AS [Nb d’occurrences du numéro]

    La clause As permet de nommer le champ retourné par la requête.

    La requête:
    Compte le nombre d'apparition de chaque numéro
    Trie les numéro par nombre d'apparition décroissant
    Ne prend que les 5 numéro(différents) ayant le nombre d'apparition le plus élevé

    C'est donc bien:
    les 5 premiers numéros les plus utilisé(s)

    Cordialement

  7. #7
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour ces explications !!

    Ne prend que les 5 numéro(différents) ayant le nombre d'apparition le plus élevé
    Ce que je ne comprends toujours pas, c'est que dans mon cas, la requête prend tous les numéros..

  8. #8
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    La requête doit renvoyer seulement 5 lignes de résultat(TOP 5).

    Dans ton cas, elle en renvoi plus?

    Je ne comprend pas quand tu dis: la requête prend tous les numéros

  9. #9
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Je veux dire qu'elle me renvoie 8 lignes de résultats..
    J'affiche les résultats à travers mon applicatif en C++, je dois mal faire..

    Je n'arrive pas à exécuter ma requête directement sur access 2007.
    Je vais dans création de requête, je choisis ma table, et je clique sur sql.
    J'écris la requête, puis il me la stocke à gauche sous ma table en tant que "Objet non associé".

  10. #10
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ah oui, alors attention parce que la clause TOP de la requête que je t'ai passée, c'est du spécifique ACCESS et pas du standard sql. Donc regarde si cette requête passe bien depuis ton code et surtout tes drivers sql C++.

    ceci dit, elle doit tourner directement dans Access.

    Peux tu me passer une copie d'écran des messages que tu obtiens? Ils sont bizarres!

    NB: tu n'a pas besoin de choisir de table avant de coller le sql!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Mes pilotes SQL/C++ sont bon. Mon application exécutent déjà plein de requêtes, le soucis ne vient donc pas de côté là.

    Je suis sur Access là.
    Je crée ma requête, puis quand je double clique dessus, on me demande de sélectionner la source de données (qui décrit le pilote auquel vous souhaitez vous connecter.) Il me demande un pilote ODBC je crois. Je ne sais pas où le trouver.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ok, mais je repose la question: est ce que la requête te fourni les bons résultats quand tu la fais tourner directement dans Access? As tu bien les 5 numéros les plus utilisés?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Et bien je ne sais pas car je n'arrive pas à exécuter la requête sous access:

    Je suis sur Access là.
    Je crée ma requête, puis quand je double clique dessus, on me demande de sélectionner la source de données (qui décrit le pilote auquel vous souhaitez vous connecter.) Il me demande un pilote ODBC je crois. Je ne sais pas où le trouver.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Oui, je vois pas ce que tu fais.
    La procédure c'est:
    Cliquer sur l'onglet Créer(du ruban), puis création de requête
    Fermer la fenêtre Afficher la table
    Cliquer sur SQl, en haut à gauche
    Coller la requête
    Puis cliquer sur Affichage ou Exécuter, en haut à gauche

    Question: ta table est bien dans la base Access?

    Access ne demande pas de spécifier un driver odbc.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Désolé, je ne faisais pas la bonne manip.

    J'ai bien 8 lignes de résultats, comme dans mon application..

  16. #16
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    ok, tu peux envoyer une copie d'écran de la requête dans le concepteur de requête et du résultat?

  17. #17
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Oui, mais comment je dois faire pour te les envoyer .....?

  18. #18
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    En mettant en pièce jointe ton fichier image.
    Images attachées Images attachées  

  19. #19
    Membre à l'essai
    Homme Profil pro
    Apprenti Réseau et Telecom
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Apprenti Réseau et Telecom
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Désolé, je n'avais pas vu..

    Voilà
    Images attachées Images attachées   

  20. #20
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ok.

    Peux tu essayer cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT TOP 5 NUM_TEL, CompteDeNUM_TEL
    FROM (
    SELECT  NUM_TEL, Count(NUM_TEL) AS CompteDeNUM_TEL
    FROM NUMTEL
    GROUP BY NUM_TEL
    ORDER BY Count(NUM_TEL) DESC
    )

Discussions similaires

  1. top 10 des requêtes les plus longues
    Par cseguino dans le forum Administration
    Réponses: 1
    Dernier message: 10/02/2010, 09h46
  2. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 10h52
  3. obtenir le top 5 des note en 1 requete?
    Par nixonne dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/12/2005, 14h40
  4. []Augmenter la taille de la pile des appels ?
    Par oncle ervil dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/05/2005, 09h29
  5. [VB.NET] [SQL] Pb requête sql, récupérer des params. ?
    Par Pleymo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/02/2005, 20h15

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