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 à l'essai
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 15
    Points
    15
    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 habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Points : 128
    Points
    128
    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 expérimenté

    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
    Points : 1 745
    Points
    1 745
    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 expérimenté

    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
    Points : 1 745
    Points
    1 745
    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 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    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 expérimenté

    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
    Points : 1 745
    Points
    1 745
    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 à l'essai
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 15
    Points
    15
    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 expérimenté

    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
    Points : 1 745
    Points
    1 745
    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