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

Langage SQL Discussion :

requete sql complexe


Sujet :

Langage SQL

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut requete sql complexe
    bonjour

    j'ai une table avec 3 attributs identificateur_de_cellule;traffic;date
    cette table contient les traffic journaliers par cellules ,par jour
    j'ai besoin d'une requete qui cherche les 3 max de traffic par cellule par semaine
    et pius la moyenne des 12 max obtenus par mois
    svp aidez moi
    meci beaucoup d'avence

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Par défaut Pour la première requête ...
    La limitation du nombre de résultat dépend de la base de données (oracle, mysql, ...).
    A essayer :

    select max(traffic),identificateur_de_cellule,date
    from matable
    group by identificateur_de_cellule,date
    limit 1,3

    select max(traffic),identificateur_de_cellule,date
    from matable
    where rowid < 4
    group by identificateur_de_cellule,date

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut mise en forme du probleme.
    bonjour

    j'ai une table avec 3 attributs identificateur_de_cellule;traffic;date
    cette table contient les traffic journaliers par cellules ,par jour
    j'ai besoin d'une requete qui cherche les 3 max de traffic par cellule par semaine
    et pius la moyenne des 12 max obtenus par mois
    svp aidez moi
    meci beaucoup d'avence
    creation de la table:
    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 TRAFFIC_CELLULES 
    ( 
    ligne int IDENTITY(0,1) PRIMARY KEY, 
    identificateur_de_cellule int,
    traffic int,
    date datetime
    )
    INSERT TRAFFIC_CELLULES(identificateur_de_cellule,traffic,date) VALUES (1,100,'01/01/2007')
    INSERT TRAFFIC_CELLULES(identificateur_de_cellule,traffic,date) VALUES (1,100,'08/01/2007')  
    INSERT TRAFFIC_CELLULES(identificateur_de_cellule,traffic,date) VALUES (1,150,'09/01/2007')  
    INSERT TRAFFIC_CELLULES(identificateur_de_cellule,traffic,date) VALUES (2,170,'09/01/2007')  
    
    la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT identificateur_de_cellule,traffic,datepart(ww,date) FROM TRAFFIC_CELLULES
    je ne sais pas sélectionner les 3 premiers de chaque semaine ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut correction.
    fonction mysql.
    Select max(traffic),identificateur_de_cellule,date
    from matable
    group by identificateur_de_cellule,date
    limit 1,3
    fonction oracle
    Select max(traffic),identificateur_de_cellule,date
    from matable
    where rowid < 4
    group by identificateur_de_cellule,date
    fonction sql serveur
    SELECT TOP 3 LIGNE FROM TABLE
    cela ne résout pas le problème puisqu'il veut les 3 premiers de chaque semaine ?

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Aucune de ces requêtes ne donne les solutions demandées. Il faut utiliser les fonctions de fennêtrage telle que RANK() OVER (ORDER BY... / PARTITION BY...).

    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 Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut merci pour l'info.
    Code valable pour sql serveur 2005 uniquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH selection
    AS
    (
    SELECT identificateur_de_cellule,traffic,datepart(ww,date) as sem,Row_NUMBER() Over (Partition By identificateur_de_cellule,datepart(ww,date) Order By traffic) as OrderRank FROM TRAFFIC_CELLULES
    )
    SELECT * FROM selection where OrderRank < 2  
    
    site :
    http://sqljunkies.com/Article/4E65FA...AB384AFBB.scuk

  7. #7
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    salut pour tous
    merci pour toutes les reponses mais malheureusement aucune ne peut me resoudre le probleme.moi je travaille avec oracle
    j'ai touvée une (presque solution)


    SELECT trunc(Dat,'WW') , CI ,max(TCH_TRAFFIC)
    FROM kpi_cell_bh
    GROUP BY trunc(Dat,'WW'), CI;
    mais cette requete me permet d'avoir le max du traffic pour chaque cellule pour chaque semaine mais moi j'ai besoin des trois plus grandes valeurs
    svp
    aidez moi

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut fonction de fenetrage sous oracle.
    Voila une discussion qui va vous interesse :

    http://www.developpez.net/forums/sho...d.php?t=322833

Discussions similaires

  1. requete sql complexe
    Par susimido dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/04/2007, 17h01
  2. requete SQL complexe!
    Par cedlannoy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2007, 20h45
  3. requete sql complexe, que faire: 2 sql imbriques ou fonction date?
    Par Aliveli dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/06/2006, 20h20
  4. Requete SQL complexe
    Par isa21493 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/02/2006, 16h43
  5. Requete sql complexe
    Par ekinoxe dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/01/2006, 16h16

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