我正在尝试筛选唯一的UserID,然后在另一列中查看哪些ID的值大于1。我已经尝试了几乎所有的例子,从SQL -从一列中选择唯一值,然后根据另一列进行筛选和至少一个或两个以上的网站,但我找不到适当的链接,因为它原来是有点不相关。
我的数据集的相关列的示例如下:
+---------+-----------+
| 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代码。
发布于 2017-12-01 02:43:28
试试这个答案,
SELECT UserId,COUNT(1) [# of Finishes]
FROM Your_Table
WHERE EventType='Finish'
GROUP BY UserID
HAVING COUNT(1)>1希望能帮上忙。
发布于 2017-12-01 04:59:51
我想借助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 https://stackoverflow.com/questions/47584432
复制相似问题