我想在某个条件之后增加一个变量。
DECLARE cpt INT64;
SET cpt = 0;
WITH CPT As (
SELECT
Date,
A,
B,
C,
D,
E,
F,
G,
CASE
WHEN B > 1 THEN ---Vérification si le capteur est fiable
CASE
WHEN A>1 THEN ---Cas numéro 1
CASE
WHEN A < (B * (1 + 0.05)) AND A > (B * (1 - 0.05)) THEN (cpt+1)
END
WHEN C>1 THEN ---Cas numéro 2
CASE
WHEN E>1 THEN ---Si la donnée est fiable
CASE
WHEN (C+E) < (B * (1 + 0.05)) AND (C+E) > (B * (1 - 0.05)) THEN (cpt + 1)
END
ELSE --- Si elle ne l'est pas
CASE
WHEN D >= 0 AND F>= 0 AND G>=0 THEN ---On vérifie que toutes ces données sont >= 0
CASE
WHEN (C+(D+F+G)) < (B * (1 + 0.05)) AND (C+(D+F+G)) > (B * (1 - 0.05)) THEN (cpt + 1)
END
ELSE ---Si elles ne le sont pas
CASE
WHEN (C+0) < (B * (1 + 0.05)) AND (C+0) > (B * (1 - 0.05)) THEN (cpt + 1)
END
END
END
WHEN E>1 THEN ---Cas numéro 3
CASE
WHEN D>=0 AND G >= 0 AND F>=0 THEN ---On vérifie que toutes ces données sont >= 0
CASE
WHEN (E + (G+D+F)) < (B * (1 + 0.05)) AND (E + (G+D+F)) > (B * (1 - 0.05)) THEN (cpt + 1)
END
ELSE
CASE
WHEN (E + 0) < (B * (1 + 0.05)) AND (E + 0) > (B * (1 - 0.05)) THEN (cpt + 1)
END
END
END
END AS Cpt_Vap_Stable,
FROM
my_table
WHERE DATETIME_DIFF(CAST("2020-05-11 21:00:00" AS DATETIME),DATETIME(Date),HOUR)<=1 AND DATETIME_DIFF(CAST("2020-05-11 21:00:00" AS DATETIME),DATETIME(Date),SECOND) > 1
ORDER BY Date
)
这个代码不起作用。我有这么多其他的情况,所以这只是一个例子,让你看看我的问题。谢谢您。
编辑:这就是我得到的,但我希望变量增加。
为了解释一下,我有一个带有列的表,我做了一些例子,在输出表中,我只需要时间戳和这个著名的计数器。
这就是我想要的:
|2020-05-11 21:00:00 | 0
|2020-05-11 21:01:00 | 1验证
|2020-05-11 21:02:00 | 2验证
|2020-05-11 21:03:00 | 3验证
|2020-05-11 21:04:00 | 3未验证
|2020-05-11 21:05:00 | 3未验证
|2020-05-11 21:04:00 | 4验证
2条答案
按热度按时间3phpmpom1#
您可以根据条件尝试使用sum函数。例如,假设我们有一个带有id列的表,并且有三个不同的id(1,2,3),因此我可以执行以下操作:
这样,我们将变量new\列作为id列中的1个数。
也可以按某列排序,例如:
使用公共bigquery数据集的嵌套条件:
1tuwyuhd2#
听起来你想
row_number()
:您没有在问题中解释您想要实现的真正逻辑是什么,但是
row_number()
似乎是解决办法。