我正在尝试过滤唯一的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
代码。
答案 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