在Domo中使用SQL来应用多个组或过滤器

时间:2017-11-30 23:39:19

标签: sql sorting filtering unique domo

我正在尝试过滤唯一的UserID,然后查看哪些ID在另一列中的值> 1。我已经尝试了SQL - Selecting unique values from one column then filtering based on another以及至少一两个网站的每个例子,但是我找不到相应的链接,因为事实证明它有点无关。

我的数据集的相关列的示例如下:

+---------+-----------+
| UserIDs | EventType |
+---------+-----------+ 
| 100     | Start     |
| 100     | Start     |
| 100     | Finish    |
| 100     | Finish    |
| 200     | Start     |
| 200     | Start     |
| 200     | Start     |
| 200     | Finish    |
| 200     | Finish    |
| 200     | Finish    |
| 300     | Start     |
| 400     | Start     |
| 400     | Finish    |
+---------+-----------+

我想弄清楚的是有多少用户多次触发EventType-Finish。我想从上面的例子中得到的数据是:

+------------------------------------------------+
| Total # of students that battled more than once|
+------------------------------------------------+  
| 2                                              |
+------------------------------------------------+ *edited*

Group By这些东西似乎都没有,因为它会将其他行压缩到彼此之间?

为了记录我对SQL非常陌生并且编程一般,所以尽量不要过于技术性。每当我接近思考我已经解决它时,我运行它并且它给我语法错误,所以我不知道还有什么地方可以转。

很抱歉,我输错了输出,实际上我只是在寻找不止一次触发Finish的学生人数。另外,我会用什么来代替一张桌子例如:FROM "TABLE",因为Domo有一种奇怪的方式来分解层次结构。对于上下文,我的表名为" Metrics Data"因此,尝试将其键入表名称通常会将data转换为SQL代码。

Attempt at answer

2 个答案:

答案 0 :(得分:0)

试试这个答案,

SELECT UserId,COUNT(1) [# of Finishes] 
FROM Your_Table
WHERE EventType='Finish'
GROUP BY UserID
HAVING COUNT(1)>1

希望它有所帮助。

答案 1 :(得分:0)

我想借助case表达式

进行一些条件聚合
SELECT 
      UserIDs [UserID],
      SUM(CASE(EventType) WHEN 'Finish' THEN 1 ELSE 0 END) [# of Finishes]
FROM <table> GROUP BY UserIDs 
HAVING SUM(CASE(EventType) WHEN 'Finish' THEN 1 ELSE 0 END) > 1

结果:

UserID  # of Start   
100     2            
200     3