SQL 쿼리 : 동일한 값을 가진 PostgreSQL에서 행 삭제

Zeliax

중복 행을 얻을 수있는 데이터베이스가 있습니다.

데이터베이스에는 다음 값이 포함됩니다.

--------------------------------------------------------------
| id  | did    | sensorid | timestamp | data  | db_timestamp |
--------------------------------------------------------------
| int | string | int      | bigint    | jsonb | bigint       |
--------------------------------------------------------------

timestamp하고 db_timestamp있는 유닉스 (1970년 1월 1일 오전 12시 0분 0초 이후 밀리 초) 타임 스탬프

중복 된 값을 많이 얻을 수 있었고이를 "삭제"하는 빠른 방법이 필요합니다. 중복임을 나타내는 값은 did, sensoridtimestamp. 이것은 이것이 동일한 행을 찾으면 중복된다는 것을 의미합니다.

중복을 찾기 위해 다음 쿼리를 만들었으므로 이제 삭제 방법을 찾아야합니다.

SELECT did, sensorid, timestamp, COUNT(*)
FROM <db_name>
GROUP BY did, sensorid, timestamp
HAVING COUNT(*) > 1
ORDER BY sensorid, timestamp;

내 db에는 거의 1.200.000.000 행이 포함되어 있으며 이러한 중복 항목이 너무 많다는 것을 알고 있으므로 나를 위해 삭제하는 파이썬 스크립트를 만들었습니다. 그러나 나는 파이썬 스크립트를 사용하는 것이 내가 필요로하는 것만 큼 빠르지 않다는 것을 알아 냈다. 그래서 나는 SQL 쿼리를 사용하여 복제물을 삭제할 수 있기를 바란다.

다음은 위 쿼리의 출력 결과입니다.

----------------------------------------------------
|       did       | sensorid |  timestamp  | count |
|"358188056470108"|    910   |1492487704000|  61   |
|"358188056470108"|    910   |1492487705000|  61   |
----------------------------------------------------

bigint성능을 향상시키기 위해 유사 할 수도 있지만 그렇게하지 않는 데에는 이유가 있습니다.

모든 중복을 삭제하고 싶지만 행 중 하나를 유지하는 것이 중요합니다. 이상적으로 id는 "원래"행이 될 가장 낮은 행 있는 행을 유지해야합니다 .

여기 누군가가 그러한 쿼리를 만드는 데 도움을 줄 수 있기를 바랍니다.

JohnHC

row_number ()와 함께 CTE를 사용하여 삭제할 ID를 식별 한 다음 삭제합니다.

with CTE as
(
select t1.*, row_number() over(partition by did, sensorid order by id) as rn
from MyTable t1
)
delete
from MyTable 
where id in (select id from CTE where rn > 1)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 행에서 동일한 값을 가진 SQL 행 삭제

분류에서Dev

SQL 14에서 동일한 값을 가진 여러 행 삭제

분류에서Dev

동일한 값을 가진 행을 조인하는 SQL 쿼리

분류에서Dev

sql : 단일 쿼리로 다른 열에서 동일한 열 값을 가진 행 선택

분류에서Dev

동일한 값 집합을 가진 행을 찾기위한 SQL 쿼리

분류에서Dev

동일한 값 집합을 가진 행을 찾기위한 SQL 쿼리

분류에서Dev

동일한 열 값을 가진 모든 행을 반환하는 SQL 쿼리

분류에서Dev

테이블에서 동일한 값을 가진 중복 행을 삭제하지만 SQL Server에서는 한 행 유지

분류에서Dev

MySQL 쿼리, 동일한 값을 가진 행 수를 5 개 결과로 제한

분류에서Dev

필드에 대해 동일한 값을 가진 여러 행 삭제

분류에서Dev

SQL 하위 쿼리 및 그룹화 기준은 동일한 값을 가진 행을 생성합니다.

분류에서Dev

SQL 쿼리에서 동일한 행의 동일한 열을 두 번 가져옵니다.

분류에서Dev

특정 연도 이전에 행을 삭제하기위한 SQL 쿼리

분류에서Dev

특정 값을 가진 모든 행을 제거하는 SQL 쿼리?

분류에서Dev

한 행의 동일한 열에서 계산 된 값을 가져 오는 쿼리

분류에서Dev

SQL 쿼리 : 동일한 값과 열 값 B를 가진 열 A가 존재하지 않는 행 가져 오기

분류에서Dev

동일한 값을 가진 각 행에 대한 PHP SQL 표시 목록

분류에서Dev

동일한 값을 가진 2D 배열에서 행 제거

분류에서Dev

SQL Server : 동일한 col 값과 특정 보조 열 값을 가진 다른 행이있는 경우 테이블에서 행 제외

분류에서Dev

동일한 열 이름을 가진 여러 행 삭제

분류에서Dev

동일한 열 이름을 가진 여러 행 삭제

분류에서Dev

동일한 값을 가진 데이터 프레임에서 동일한 변수가있는 행 제외

분류에서Dev

SQL 동일한 테이블의 쿼리를 기반으로 행을 삭제 하시겠습니까?

분류에서Dev

SQL 쿼리를 사용하여 삽입 기가 된 한 시간 후에 테이블에서 행 삭제

분류에서Dev

여러 행 값을 가져오고 단일 행에 에코하는 SQL 쿼리

분류에서Dev

반복되는 행에서 고유 한 값을 가져 오는 SQL 쿼리

분류에서Dev

SQL 쿼리는 동일한 열 동일한 테이블에서 특정 값을 제외합니까?

분류에서Dev

열에서 동일한 값을 가진 행을 함께 병합

분류에서Dev

연속적인 동일한 값을 가진 열 이벤트를 기반으로 데이터 프레임에서 행을 삭제하는 방법

Related 관련 기사

  1. 1

    다른 행에서 동일한 값을 가진 SQL 행 삭제

  2. 2

    SQL 14에서 동일한 값을 가진 여러 행 삭제

  3. 3

    동일한 값을 가진 행을 조인하는 SQL 쿼리

  4. 4

    sql : 단일 쿼리로 다른 열에서 동일한 열 값을 가진 행 선택

  5. 5

    동일한 값 집합을 가진 행을 찾기위한 SQL 쿼리

  6. 6

    동일한 값 집합을 가진 행을 찾기위한 SQL 쿼리

  7. 7

    동일한 열 값을 가진 모든 행을 반환하는 SQL 쿼리

  8. 8

    테이블에서 동일한 값을 가진 중복 행을 삭제하지만 SQL Server에서는 한 행 유지

  9. 9

    MySQL 쿼리, 동일한 값을 가진 행 수를 5 개 결과로 제한

  10. 10

    필드에 대해 동일한 값을 가진 여러 행 삭제

  11. 11

    SQL 하위 쿼리 및 그룹화 기준은 동일한 값을 가진 행을 생성합니다.

  12. 12

    SQL 쿼리에서 동일한 행의 동일한 열을 두 번 가져옵니다.

  13. 13

    특정 연도 이전에 행을 삭제하기위한 SQL 쿼리

  14. 14

    특정 값을 가진 모든 행을 제거하는 SQL 쿼리?

  15. 15

    한 행의 동일한 열에서 계산 된 값을 가져 오는 쿼리

  16. 16

    SQL 쿼리 : 동일한 값과 열 값 B를 가진 열 A가 존재하지 않는 행 가져 오기

  17. 17

    동일한 값을 가진 각 행에 대한 PHP SQL 표시 목록

  18. 18

    동일한 값을 가진 2D 배열에서 행 제거

  19. 19

    SQL Server : 동일한 col 값과 특정 보조 열 값을 가진 다른 행이있는 경우 테이블에서 행 제외

  20. 20

    동일한 열 이름을 가진 여러 행 삭제

  21. 21

    동일한 열 이름을 가진 여러 행 삭제

  22. 22

    동일한 값을 가진 데이터 프레임에서 동일한 변수가있는 행 제외

  23. 23

    SQL 동일한 테이블의 쿼리를 기반으로 행을 삭제 하시겠습니까?

  24. 24

    SQL 쿼리를 사용하여 삽입 기가 된 한 시간 후에 테이블에서 행 삭제

  25. 25

    여러 행 값을 가져오고 단일 행에 에코하는 SQL 쿼리

  26. 26

    반복되는 행에서 고유 한 값을 가져 오는 SQL 쿼리

  27. 27

    SQL 쿼리는 동일한 열 동일한 테이블에서 특정 값을 제외합니까?

  28. 28

    열에서 동일한 값을 가진 행을 함께 병합

  29. 29

    연속적인 동일한 값을 가진 열 이벤트를 기반으로 데이터 프레임에서 행을 삭제하는 방법

뜨겁다태그

보관