我有两个数据表,您可以在其中找到它们。
我想获得:
但是只有具有4个或更多不可评估活动的受试者 ...
这是我到目前为止拥有的代码,但是我得到的“名称”不是我想要的...
这就是我所希望的(附加的)
我尝试了其他方法,但得到的名字正确,但不是我想要的名字。
有帮助吗?谢谢!
表1
表2
我的代码
我想要的结果
其他错误代码
答案 0 :(得分:0)
第一个查询中缺少的是联接条件。您的代码只说... FROM table1 JOIN table2 GROUP BY...
,而没有联接条件的联接将创建笛卡尔联接(来自table1的所有记录将与来自table2的所有记录配对)。只需从查询中删除分组依据和计数,即可了解我的意思。
只需添加连接条件(subject_id似乎是两个表之间的公共字段):
... FROM table1 JOIN table2 on table1.subject_id=table2.subject_id GROUP BY...
请使用各自的表名替换table1和table2。
答案 1 :(得分:0)
从第二个查询开始:将聚合查询与«HAVING BY»子句一起使用是一个好主意,但是,联接表的方式并不可行,因为它会产生笛卡尔积。
尝试:
SELECT
s.subject_id,
s.name,
COUNT(distinct n.act_id)
FROM
subject as s
INNER JOIN nonevaluableactivity as n
ON n.subject_id = s.subject_id
GROUP BY
s.subject_id,
s.name
HAVING
COUNT(distinct n.act_id) >= 4