where V1, V2 not in (select V1, V2 /édité/
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/
Code:
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 |
/edit : précision sur le problème/
Citation:
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.
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.
/edit : j'ajoute le code qui marche mais qui n'est pas propre/
Code:
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 |
Mais je voulais savoir s'il y avait solution plus propre à mon problème.
Merci.