[英]SQL Find first occurrence of row in table
id name marks
1;"mohit";10
2;"mohit";20
3;"raj";30
4;"rupesh";40
5;"rupesh";50
預期產出是:
1;"mohit";10
4;"rupesh";40
嘗試這個
SELECT *
FROM Your_Table
WHERE ID IN (
SELECT Min(ID)
FROM Your_Table
GROUP BY Name
HAVING Count(*) > 1
)
我認為DISTINCT ON
應該在這里工作:
SELECT DISTINCT ON (name) name, id, marks
FROM your_table
ORDER BY name, id;
這假設你想要每個人的第一行關於id
。
晚編輯:
看起來您希望每個名稱組中的第一條記錄至少出現兩次或更多次。 我們可以嘗試以下查詢:
SELECT id, name, marks
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) rn,
COUNT(*) OVER (PARTITION BY name) cnt
FROM your_table
) t
WHERE rn = 1 AND cnt > 1;
使用組來計算多次出現..
SELECT * FROM表WHERE名稱IN(SELECT名稱FROM表GROUP BY名稱HAVING COUNT(名稱)> 1)
我認為這應該有效
select * from
(select ROW_NUMBER() OVER(
PARTITION BY name
ORDER BY id ) as rnum , name ,id ,marks
from your_table) A
where rnum = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.