我使用bigquery尝试建立示例,其中不同的会话在同一会话中有许多错误标志,并返回其中一个特定的错误。例子:
session_id fault
1234 a
1234 b
1234 c
1234 d
5678 a
5678 c
9012 b
4567 a
4567 c
在上表中,我将查找发生了错误a、b、c、d的不同会话,并仅返回带有会话id和错误c的行(以及此行中的其他列)以供进一步分析。我尝试了不同的where语句,但不确定会话id应该等于什么。
理想情况下,这将为每个不同的会话返回一行。例子:
SELECT *
FROM
(SELECT *
FROM table
WHERE session_id = ?
AND fault IN ('a', 'b', 'c', 'd'))
WHERE fault = 'c'
4条答案
按热度按时间9avjhtql1#
你似乎发现下面有条件的拒绝
t9aqgxwy2#
下面是bigquery标准sql
它返回所选行中的所有列
如果您需要选择last的逻辑(比如说按错误排序),那么您可以使用下面的版本
brccelvz3#
如果你特别想要故障“c”,那么
如果会话中没有重复出现故障(如示例数据中所示),则可以使用:
如果它们可以重复,你可以使用
count(distinct)
取而代之的是:2nc8po8w4#
很多其他的好答案,但这可以用基本原则来解决:选择有错误c的行,选择有4个错误的行(或者任何你需要的标准),然后加入。