Oracle 查询:如何将返回的记录限制为仅那些计数 > 1 但显示完整结果的记录?
Oracle query: how do I limit the returned records to only those having a count > 1 but show full results?
我需要显示所有拥有多个 ID 的用户,而不是 return 拥有多个 ID 的用户。我尝试了分组,但我需要列出 ID,而不仅仅是计算它们,所以无法让它为我工作。我最终使用了下面的代码,但它 returns 所有记录。
select id,fname,lname,ssn,dob
count(id) over partition by fname,lname,ssn,dob) 作为 cnt
来自 TABLE
按 cnt desc 排序;
使用子查询:
select id, fname, lname, ssn, dob
from (select id, fname, lname, ssn, dob,
count(id) over (partition by fname, lname, ssn, dob) as cnt
from TABLE
) t
where cnt >= 2
order by cnt;
WITH CTE (FNAME, LNAME, TALLY) AS
(
SELECT FNAME, LNAME, COUNT(ID) AS TALLY
FROM TABLE
HAVING COUNT(ID) > 1
)
SELECT T.ID, C.FNAME,C.LNAME FROM CTE C
JOIN TABLE T
ON C.FNAME = T.FNAME
AND C.LNAME = T.LNAME
我需要显示所有拥有多个 ID 的用户,而不是 return 拥有多个 ID 的用户。我尝试了分组,但我需要列出 ID,而不仅仅是计算它们,所以无法让它为我工作。我最终使用了下面的代码,但它 returns 所有记录。
select id,fname,lname,ssn,dob count(id) over partition by fname,lname,ssn,dob) 作为 cnt 来自 TABLE 按 cnt desc 排序;
使用子查询:
select id, fname, lname, ssn, dob
from (select id, fname, lname, ssn, dob,
count(id) over (partition by fname, lname, ssn, dob) as cnt
from TABLE
) t
where cnt >= 2
order by cnt;
WITH CTE (FNAME, LNAME, TALLY) AS
(
SELECT FNAME, LNAME, COUNT(ID) AS TALLY
FROM TABLE
HAVING COUNT(ID) > 1
)
SELECT T.ID, C.FNAME,C.LNAME FROM CTE C
JOIN TABLE T
ON C.FNAME = T.FNAME
AND C.LNAME = T.LNAME