Bonjour,
Je souhaite filtrer sur deux champs en même temps mais je me fais "jeter".
/edit : j'ajoute la requête complète pour clarifier mon problème/
/edit : précision sur le problème/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT CAST(COUNT(*) AS FLOAT) / CAST(COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) AS FLOAT) FROM TabLog WHERE Canal = @Canal AND Date >= @DateDebut AND Date < @DateFin AND source, destination NOT IN ( SELECT TOP 3 source, destination FROM TabLog WHERE Canal = @Canal AND Date >= @DateDebut AND Date < @DateFin GROUP BY source, destination ORDER BY COUNT(*) DESC) HAVING COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) > 0
J'ai résolu le problème en bidouillant un cast(V1 as varchar)+':'+cast(V2 as varchar) pour n'avoir qu'une seule variable.L'idée est de calculer la moyenne horaire du nombre de logs sur un canal @Canal pendant la période @DateDebut-@DateFin en ne considérant que les heures où il y a eu du trafic, SANS TENIR COMPTE DES TROIS PLUS GROS CONSOMMATEURS.
/edit : j'ajoute le code qui marche mais qui n'est pas propre/
Mais je voulais savoir s'il y avait solution plus propre à mon problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT CAST(COUNT(*) AS FLOAT) / CAST(COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) AS FLOAT) FROM TabLog WHERE Canal = @Canal AND Date >= @DateDebut AND Date < @DateFin AND CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR) NOT IN ( SELECT TOP 3 CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR) FROM TabLog WHERE Canal = @Canal AND Date >= @DateDebut AND Date < @DateFin GROUP BY CAST(source AS VARCHAR)+':'+CAST(destination AS VARCHAR) ORDER BY COUNT(*) DESC) HAVING COUNT(DISTINCT DATEADD(MINUTE, -DATEPART(MINUTE, Date), Date)) > 0
Merci.




Répondre avec citation











Partager