Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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/08/2011, 16h03   #1
Membre à l'essai
 
Inscription : novembre 2008
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : novembre 2008
Messages : 34
Points : 24
Points : 24
Par défaut Découper les dates en période

Bonjour à tous, j'ai effectué une recherche sur le forum mais n'ai rien trouvé pour répondre à ma questionnement.

Comme je suis un peu pressé dans le temps pour trouver cette information je m'adresse à vous tous. J'aimerais ajouter un découpage en période de 15min à une db qui contient une colonne DATE (format datetime).

J'ai essayé différents moyens mais je n'arrive pas à ce que je veux. L'objectif est de regouper les transactions par type par période de 15 min par jour en référençant une nouvelle colonne (15min)

Exemple de table désiré:

TRX_ID (INT) | EVT_NMTRX (VRCHAR) | CLIENT_MAIL (VARCHAR)| DATE ( DATETIME) | Qt | 15min (HH:MM:SS)
0001234567 | Achat - Catalogue web | roger_rabbit2@lapin.com | 08-08-18 10:36:15 | 21 | 10:30:00
0001234568 | Achat - Magasin E-bay | fardoche_1@fermier.com | 08-08-18 10:47:19 | 36 | 10:45:00

J'ai découpé mes date en format Date à l'aide d'un CAST que j'insère dans une colonne Jour. Mais je bloque au découpage en période de 15min.

J'aimerais avoir une colonne comme l'exemple 15min, qui me permettrait de faire mes regroupement au 15 min.

Est-ce que quelqu'un peut m'éclairer svp?
Ledobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 16h31   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
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 669
Points : 8 729
Points : 8 729
Bonjour,

La réponse dépend de la version de SQL Server que vous utilisez : si vous êtes sous SQL Server 2008, on peut utiliser le type de données time.
Si vous êtes sous une version antécédente, il faut faire autre chose.

Quel est le but de la manœuvre ?

@++
__________________
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/08/2011, 01h58   #3
Membre à l'essai
 
Inscription : novembre 2008
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : novembre 2008
Messages : 34
Points : 24
Points : 24
SQL Server 2008.

Le but étant de regrouper mes pics de transactions dans une plage de 15min.

C'est à dire prendre toute les transactions entres 10:30 et 10:45; 10:45 et 11:00, etc. et ce sur une période de 24. Je veux ce découpage pour permettre la génération d'un rapport qui sera extrait par un getionnaire qui ne veut avoir rien d'autre à faire qu'ouvrir un fichier Excel. Je connecterais donc un classeur à cette table et il pourra manipuler le TcD comme il le veut en voyant les pics de transaction par période de 15min par jour.
Ledobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 14h44   #4
Membre à l'essai
 
Inscription : novembre 2008
Messages : 34
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : novembre 2008
Messages : 34
Points : 24
Points : 24
Par défaut Réglé

J'ai réglé mon problème en trois temps. Premièrement, j'ai convaincu le gestionnaire de découper en 10 minutes au lieu de 15 .

Ensuite j'ai créer une colonne dans laquelle j'inscris la conversion de ma colonne Date au format TIME

LEFT(CONVERT(TIME,DATE,0),5) AS [Heure]

Une fois cette opération fait j'obtiens l'heure. Enfin je créer une petite vue qui ajoute une autre colonne qui découpe au 10 minutes.

LEFT(CONVERT(TIME, a.Heure), 4) + '0' AS [PERIODE]

En retirant la dernière minute pour la remplacer par 0 je règle la question. Pour obtenir les pics j'exécute un classeur Excel qui comporte une requête qui fait un SELECT DISCTINCT EVT_NMTRX, CLIENT_MAIL, DATE, PERIODE, COUNT(PERIODE) AS PEAK

J'ai donc tout ce qui me faut pour interpréter les pics de transactions et en lui ajoutant des beaux segments dans le classeur il peut découper le tout par type de transactions.

Ma seule peur maintenant c'est qu'au fil du temps la bd va grossir et la vue va être longue à traiter

On verra rendu là à moins que quelqu'un aie une solution plus effiace. En ce moment pour traiter 3millions de lignes j'ai un temps réponse de 15sec.

Bonne journée
Merci.
Ledobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h16.


 
 
 
 
Partenaires

Hébergement Web