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

MS SQL Server Discussion :

requete sql server


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut requete sql server
    Bonjour,

    je veux réaliser une requete SQL qui va me sortir les moyennes hebdo par utilisateur par application
    et une autre requetre pour la moyenne journalière par utilisateur et par application aussi.

    je ne sais pas si c'est claire, mais je vous remercie d'avance

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Bonjour
    Citation Envoyé par loubna04 Voir le message
    je ne sais pas si c'est claire, [...]
    Euh... non pas du tout ! Il faudrait détailler un peu plus.

    Quels sont les tables/Champs impliqués dans ta requête?
    Quels sont les résultats à obtenir ?
    As-tu déjà construit une requête ? Si oui, poste le code.

    Bref aide-toi et DVP t'aidera.

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    lool, oui t'as raison, ce n'est pas assez claire !

    Alors voilà, je souhaite calculer une moyenne journalière par utilisateur:
    j'ai une colonne "Value" on va dire dans la table "table1" que se calcule dans des instants T(colonne : "DateTime" de la forme '2010-02-23 20:58:32.823') dans la journée pour chaque user par application
    ce que j'ai moi, c'est une moyenne dans chaque instant T par utilisateur par application.

    et donc j'aimerais par exemple avoir:
    ID users Applications Moyenne date
    1 user1 application1 xxxxx 2010-02-23
    2 user2 application1 xxxxx 2010-02-22
    3 user3 application1 xxxxx 2010-02-21

    et de meme pour la moyenne hebdomadaire:

    ID users Applications Moyenne date
    1 user1 application1 xxxxx semaine 22 fevrier
    2 user2 application1 xxxxx semaine du 1 mars

    je ne sais pas si claire maintenant

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par loubna04 Voir le message
    je ne sais pas si claire maintenant
    Vi maintenant c'est cool.

    Bon pour la moyenne journalière par User par Application, ca devrait ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
      USER_ID, 
      APPLI_ID, 
      CAST(MY_DATETIME AS DATE) AS JOUR, 
      AVG(MY_VALUE) AS MOYENNE
    FROM
      MA_TABLE
    -- WHERE
    --  MY_DATE BETWEEN (Condition Eventuelle)
    GROUP BY
      1, 2, 3;
    Pour la deuxième il faudraut pouvoir extraire de MY_DATE le n° de la semaine, mais le principe reste le même.

    @+ Claudius

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    Merci
    je vais essayer et je te dirai si ça marche.

    @+

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    voila, j'ai adapté ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT BD.UserData.userID,ObjectName,AppName
    EXTRACT(Date from DateTime) AS JOUR, 
    AVG(Value) AS MOYENNE
    FROM
      BD.UserData, BD.UserDetails
    GROUP BY
      1, 2, 3;
    je reçois l'erreur suivante:
    Server: Msg 170, Level 15, State 1, Line 2
    Line 2: Incorrect syntax near 'Date'.

    A ton avis, c'est quoi le problème?

  7. #7
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Oui j'ai corrigé mon code entre-temps.

    Pour le n° de la semaine tu peux faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXTRACT(WEEK FROM MY_DATE)
    Je sais que cela fonctionne avec Firebird. A vérifier avec Interbase.

    @+

  8. #8
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    Ce que j'ai compris que "EXTRACT" n'est pas reconnu !!
    je travaille sous SQL Server 2000.
    et je fais mes requetes avec SQL Query Analyser.

  9. #9
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par loubna04 Voir le message
    je travaille sous SQL Server 2000.
    Tu t'es trompé de forum. Là nous sommes dans le forum Interbase. ²

    Je déplace.

  10. #10
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    je vois.
    je demande de l'aide toujours

  11. #11
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    Dans SQL server le EXTRACT c'est le DATEPART, j'ai modifié la requete, mais ça ne marche toujours pas!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT BD.UserData.userID,ObjectName,AppName
    DATEPART(Day FROM DateTime) AS JOUR, 
    AVG(Value) AS MOYENNE
    FROM
      BD.UserData, BD.UserDetails
    GROUP BY
      1, 2, 3;

  12. #12
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    c'est un problème de type, j'ai le message d'erreur suivant quand j'exécute le DATEPART.

    Syntax error converting datetime from character string
    quelqu'un à une idée pour faire la effectuer la conversion?
    Merci d'avance

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEPART(Day, DateTime)
    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/ * * * * *

  14. #14
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    exact..
    Mais là j'ai un problème de type
    "Syntax error converting datetime from character string" avec la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT datepart(day,DateTime)from DataBase;
    avec cast ou convert, ça me fait la même erreur

  15. #15
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Bonjour,

    Le datetime dans la fonction datepart doit référencer une colonne de type datetime se trouvant dans votre table référencée après la clause from.

    A+

  16. #16
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    oui exact,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select datepart(day,CounterDateTime) from DataBase
    la colonne "CounterDateTime" est de type char, du coup je dois effectuer une conversion, mais je ne trouve pas la bonne syntaxe.

    pouvez vous m'aider SVP.

    Merci d'avance.

  17. #17
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datepart(day, convert(datetime, CounterDateTime, 121))

  18. #18
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    quand j'exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select datepart(day, convert(datetime, CounterDateTime, 121)) from tableData;
    j'ai le msg d'erreur:
    "Server: Msg 241, Level 16, State 1, Line 1 Syntax error converting datetime from character string."

  19. #19
    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
    Je me suis basé sur cette phrase :
    colonne : "DateTime" de la forme '2010-02-23 20:58:32.823'
    Il faut bien entendu que ce soit le cas pour l'ensemble de vos données.
    Si vous avez un format "naturel", vous pouvez essayer de faire confiance au moteur SQL Server :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datepart(day, cast(CounterDateTime as datetime))
    Sinon, l'ensemble des formats est disponibles ici :
    http://msdn.microsoft.com/fr-fr/library/ms187928.aspx

  20. #20
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 55
    Par défaut
    j'ai beau à essayer,
    la dernière requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select DATEPART(day, Cast(CounterDateTime AS DateTime)) from CounterData;
    mais j'ai le msg d'erreur:
    "Server: Msg 241, Level 16, State 1, Line 1
    Syntax error converting datetime from character string.
    "
    voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT a.CounterID,b.ObjectName,b.MachineName,b.InstanceName
    DATEPART(day, Cast(a.CounterDateTimen AS DateTime)) AS JOUR, 
    AVG(a.CounterValue) AS MOYENNE
    FROM
      dbo.CounterData as a FULL OUTER JOIN dbo.CounterDetails as b
      ON a.CounterID=b.CounterID
    GROUP BY  
      	1, 2, 3;
    et voici le msg d'erreur que je reçois:
    "Server: Msg 170, Level 15, State 1, Line 3
    Line 3: Incorrect syntax near 'day'.
    "
    je n'arrive pas à repérer mon erreur!!
    Merci pour votre aide.

Discussions similaires

  1. formater montant requete sql server
    Par esthr dans le forum Développement
    Réponses: 1
    Dernier message: 19/10/2007, 12h58
  2. % dans une requete SQL-Server
    Par 18Marie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/10/2006, 13h02
  3. Requête SQL Server comme source d'un état
    Par gambi dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 04/09/2006, 16h38
  4. Convertisseur de requete SQL-SERVER en ACCESS
    Par emazes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/12/2005, 09h12
  5. probleme avec creation requete sql server
    Par Firas_tn dans le forum MS SQL Server
    Réponses: 19
    Dernier message: 15/04/2005, 12h12

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