Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer un filtrage (bande morte) lors de l'extraction

4 réponses
Avatar
sfauchille
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant


Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite r=E9cup=E9rer le nombre de passage =E0 1 mais o=F9 la dur=E9e =
=E0 0 et
sup=E9rieur =E0 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1


Si quelqu'un peut m'aider.

Merci d'avance

4 réponses

Avatar
sfauchille
On 4 sep, 18:16, "" wrote:
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

Nom , DateTime  , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1

Si quelqu'un peut m'aider.

Merci d'avance



Personne pour m"aider.
Dommage
Avatar
Fred BROUARD
le titre de votre demande est incompréhensible et votre demande incomplète.
voici néanmoins un début de réponse :

CREATE TABLE T1 (Nom VARCHAR(4), DateHeure DATETIME, Valeur INT)

INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:00', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:15', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:20', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:30', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:40', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:50', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:52', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:55', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:01:30', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:02:50', 0)


SELECT Nom, DateHeure, Valeur, DATEDIFF(second, DateHeure, DTfin) AS
DureeSeconde
FROM (SELECT *, (SELECT MIN(DateHeure)
FROM T1 AS TIN
WHERE TIN.Nom = TOUT.Nom
AND TIN.DateHeure > TOUT.DateHeure) AS DTfin
FROM T1 AS TOUT) AS T

maintenant quelle est la référence de durée à 0 ???? par rapport à
quelle chronologie ????

Soyez clair et précis si vous voulez de l'aide !

A +



a écrit :
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant


Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1


Si quelqu'un peut m'aider.

Merci d'avance




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
Patrice
Bonjour,

La communication sur internet étant difficile à première vue j'avais
l'impression que tu voulais restaurer partiellement une table à partir d'une
bande HS !!! Comme quoi...

A première vue je dirais qq chose comme (non testé et de bon matin) :

SELECT *,(SELECT TOP 1 DateTime FROM MaTable WHERE Valeur=0 AND
DateTime>t.DateTime ORDER BY DAteTime) AS Fin FROM MaTable t WHERE Valeur=1

L'idée est de prendre les valeurs à 1 et de mettre à côté la valeur 0 (qui
est la fin de l'opération ?) avec la date immédiatement supérieure. La même
sous-requête peut-être utilisée dans un DATEDIFF pour mettre le critère sur
la durée.

Bonne continuation

--
Patrice

a écrit dans le message de groupe de discussion :

On 4 sep, 18:16, "" wrote:
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1

Si quelqu'un peut m'aider.

Merci d'avance



Personne pour m"aider.
Dommage


Avatar
sfauchille
On 10 sep, 10:10, Fred BROUARD wrote:
le titre de votre demande est incompréhensible et votre demande incompl ète.
voici néanmoins un début de réponse :

CREATE TABLE T1 (Nom VARCHAR(4), DateHeure DATETIME, Valeur INT)

INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:00', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:15', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:20', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:30', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:40', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:50', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:52', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:55', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:01:30', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:02:50', 0)

SELECT Nom, DateHeure, Valeur, DATEDIFF(second, DateHeure, DTfin) AS
DureeSeconde
FROM (SELECT *, (SELECT MIN(DateHeure)
            FROM   T1 AS TIN
            WHERE  TIN.Nom = TOUT.Nom
              AND  TIN.DateHeure > TOUT.DateHeure) AS DTf in
FROM   T1 AS TOUT) AS T

maintenant quelle est la référence de durée à 0 ???? par rapport à
quelle chronologie ????

Soyez clair et précis si vous voulez de l'aide !

A +

a écrit :





> J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

> Nom , DateTime  , Valeur
> Var1 , 04/09/2008, 17:00:00, 1
> Var1 , 04/09/2008, 17:00:15, 0
> Var1 , 04/09/2008, 17:00:20, 1
> Var1 , 04/09/2008, 17:00:30, 0
> Var1 , 04/09/2008, 17:00:40, 1
> Var1 , 04/09/2008, 17:00:50, 0
> Var1 , 04/09/2008, 17:00:52, 1
> Var1 , 04/09/2008, 17:00:55, 0
> Var1 , 04/09/2008, 17:01:30, 1
> Var1 , 04/09/2008, 17:02:50, 0

> Je souhaite récupérer le nombre de passage à 1 mais où la dur ée à 0 et
> supérieur à 5 secondes
> Donc logiquement ici 3 :
> Var1 , 04/09/2008, 17:00:00, 1
> Var1 , 04/09/2008, 17:00:40, 1
> Var1 , 04/09/2008, 17:01:30, 1

> Si quelqu'un peut m'aider.

> Merci d'avance

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL
Le site sur le langage SQL et les SGBDR  :  http://sqlpro.developpez. com
Audit, conseil, expertise, formation, modélisation, tuning, optimisatio n
***********************http://www.sqlspot.com*************************- M asquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour,
Effectivement ma demande peut sembler ne pas être claire et j'en suis
désolé.
En clair je bosse dans l'automatisme et j'enregistre dans une base de
données le changement d'état de vannes (vanne fermée =0 et vanne
ouverte =1).
Et on me demande la chose suivante.
Pour une vanne donnée (Var1 par exemple) je souhaite savoir combien de
fois cette vanne a été ouverte (jusque là pas de problème) mais don t
la durée d'ouverture est supérieur à 5 secondes.
Voila, j'espère avoir été plus clair dans mon explication
Bonne journée à vous