Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2011, 13h32   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 41
Points : 14
Points : 14
Par défaut regrouper datetime par heure

Mon but est de sortir un tableau qui me sorte le nb de commandes par heure or j'ai la liste des commandes par datetime de la commande.
Quelqu'un a t il la solution pour ma where clause?
Je suis sous sql server 2008.

select count(commande)
from table_commande
where ?

Merci
Pastoi
pastoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h18   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Une idée, tu peux créer une table INTERVAL

Citation:
INTERVAL HEURE_MIN HEURE_MAX
---------- ---------- ------------

1 ------------ 1 ------------ 2

2 ------------ 2 ------------ 3
.. .. ...

23 ------------ 23 ------------ 24
et faire une jointure entre cette table et la table commande
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 14h53   #3
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Poste ta requete, ca sera plus simple pour te repondre,

Si j'ai bien compris, tu veux regrouper sur la l'heure, sans prendre en compte le jour, ni les minutes,...
donc en gros savoir le nombre de commandes passées entre minuit et une heure, entre une heure et deux heures,...

dans ce cas :
Code sql :
1
2
3
4
5
6
7
 
SELECT 
  DATEPART(HOUR, MaDate) AS Heure
  , COUNT(*) AS NbCommandes
FROM 
  MaTable
GROUP BY DATEPART(HOUR, MaDate)
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 05h04   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 710
Points : 8 710
Notez qu'un GROUP BY sur une fonction est contre-performant, à moins que la fonction soit une colonne calculée indexée de la table, ou que vous utilisiez une vue indexée ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 22h50   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 769
Points : 17 769
Code :
1
2
3
4
5
6
SELECT CONVERT(CHAR(10), MaDate, 121) AS D, 
       DATEPART(HOUR, MaDate) AS H,
       COUNT(*) AS NOMBRE
FROM   MaTable
GROUP BY CONVERT(CHAR(10), MaDate, 121), 
         DATEPART(HOUR, MaDate)
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 11h56   #6
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 3
Points : 1
Points : 1
Bonjour à tous,

Je me permets de relancer le thread avec la question suivante :
Et si on veut regrouper par 1/2 heure, par 1/4 d'heure, etc... ???!

ca m'intéresserait fortement!!

Merci d'avance pour toute idées!

DF4ze

--------
Modif :
Je viens de trouver ca ...

mais ne serait-il pas possible d'éviter la table temporaire?
--> J'ai qu'un acces en lecture ... je ne peux pas créer de table supplémentaire...
DF4ze est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web