假設我有一個包含以下資料的表emp
| ID | 名 | 姓 | 年齡 |
|---|---|---|---|
| 1 | 約翰 | 能源部 | 20 |
| 2 | 簡 | 史密斯 | 90 |
| 3 | 約翰 | 能源部 | 39 |
| 4 | 簡 | 史密斯 | 47 |
| 5 | 簡 | 能源部 | 89 |
我想要一個回傳first_name,last_name重復組合的查詢,即
| ID | 名 | 姓 | 年齡 |
|---|---|---|---|
| 1 | 約翰 | 能源部 | 20 |
| 3 | 約翰 | 能源部 | 39 |
| 2 | 簡 | 史密斯 | 90 |
| 4 | 簡 | 史密斯 | 47 |
uj5u.com熱心網友回復:
看來您只需要一個COUNT() OVER()視窗功能-
SELECT ROWNUM, first_name, last_name, age
FROM (SELECT first_name, last_name, age, COUNT(*) OVER(PARTITION BY first_name, last_name) CNT
FROM Your_table)
WHERE CNT > 1;
uj5u.com熱心網友回復:
這是一種選擇。
樣本資料:
SQL> with emp (id, first_name, last_name, age) as
2 (select 1, 'John', 'Doe' , 20 from dual union all
3 select 2, 'Jane', 'Smith', 90 from dual union all
4 select 3, 'John', 'Doe' , 39 from dual union all
5 select 4, 'Jane', 'Smith', 47 from dual union all
6 select 5, 'Jane', 'Doe' , 89 from dual
7 )
查詢從這里開始:
8 select *
9 from emp
10 where (first_name, last_name) in (select first_name, last_name
11 from emp
12 group by first_name, last_name
13 having count(*) > 1
14 )
15 order by first_name, last_name;
ID FIRS LAST_ AGE
---------- ---- ----- ----------
4 Jane Smith 47
2 Jane Smith 90
3 John Doe 39
1 John Doe 20
SQL>
uj5u.com熱心網友回復:
SELECT
Id, first_name, last_name, age,
COUNT(*)
FROM
EMP
GROUP BY
ID,
first_name,
last_name,
age;
謝謝你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488369.html
