我一直在阅读这里贴出的类似问题的解决方案,但似乎没有一个能解决我的特定问题。
我目前有一个表(ctu-joined),它包括三列:identifer列(tumourid)、date列(avctu-date)和另一个date列(opdate)。
例如,两个ID的列如下所示:
ID, AVCT_DATE, OPDATE
1, 06-APR-13, 06-APR-13
1, 06-APR-13, 14-JUN-13
1, 06-APR-13, 22-JUN-13
2, 03-APR-14, 10-DEC-15
2, 03-APR-14, 31-DEC-15
我试图做的是创建一个列,该列等于每个id的唯一日期数,因此id 1的结果是3,id 2的结果是3。
我尝试在两列中计算不同的值,但这并不能提供上面的答案(而是分别报告值3和2):
select TUMOURID, COUNT(DISTINCT(AVCT_DATE || OPDATE)) AS COUNT
FROM CT_JOINED
GROUP BY TUMOURID;
如果我尝试在新表中执行同样的操作,也会发生同样的情况:
CREATE TABLE CT_DISTINCT AS (
SELECT TUMOURID, COUNT(*) AS COUNT
FROM (
SELECT DISTINCT TUMOURID, AVCT_DATE, OPDATE
FROM CT_JOINED)
GROUP BY TUMOURID
);
我不知所措。有可能吗?
4条答案
按热度按时间nhaq1z211#
取出数据,然后使用
count(distinct)
或删除重复项:dfuffjeb2#
使用
UNION
为避免重复日期,请使用count(*)
:lnlaulya3#
下面的所有答案都像一个符咒,只需稍加调整,就可以解释具有空值的行。例如:
非常感谢。
nzrxty8p4#
您可以使用: