비슷한 항목을 통합하여 놀라운 크기로 증가하는 테이블의 크기를 줄이는 방법을 찾으려고합니다. 내가 원하는대로 데이터를 롤업하는 작업 '그룹화'쿼리를 얻었습니다. 기존 엔트리를 삭제하고 그 select 문을 기반으로 새로운 항목을 삽입하는 방법을 모르겠습니다. 나는 가장 직접적인 접근 방식이 선택을 실행하고, 그 결과를 메모리에 저장하고, 테이블 항목을 삭제 한 다음 통합 항목을 삽입한다고 가정합니다. 그러나 이것은 비효율적이며 많은 메모리를 사용할 것입니다. 아마도 SQL 매직을 수행하고 한꺼번에 모든 것을 수행 할 수있는 방법이 있기를 바랄 것입니다.SQL 그룹 기존 행을 사용하여 삭제 및 그룹화 결과 삽입
이 선택 내 '으로 그룹'이다
select SUM(user_in),
SUM(user_out),
SUM(user_total),
name,
device_type,
device_os,
ownership,
host_name
FROM user_usage
GROUP BY name,
device_type,
device_os,
ownership,
host_name;
감사합니다! 매우 효율적인하면서 다른 사람이 지금까지 이런 일에 실행되는 경우
,이 기능은 통합을 수행 :
CREATE OR REPLACE FUNCTION consolidate_user_bandwidths(
IN _tbl REGCLASS,
IN _savetime TIMESTAMP
) RETURNS void AS
$BODY$
BEGIN
EXECUTE 'CREATE TEMP TABLE user_bandwidths_temp ON COMMIT DROP AS
SELECT MAX(id) AS id, SUM(bandwidth_in) AS bandwidth_in,
SUM(bandwidth_out) AS bandwidth_out,
'''|| _savetime ||'''::timestamp AS created_at,
SUM(bandwidth_total) AS bandwidth_total, name,
device_type, device_os,
ownership, host_name
FROM '|| _tbl ||'
GROUP BY name, device_type,
device_os, ownership, host_name';
EXECUTE 'TRUNCATE TABLE '|| _tbl ||'';
EXECUTE 'INSERT INTO '|| _tbl ||' SELECT * FROM user_bandwidths_temp';
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
RDBM이란 무엇입니까? –
원치 않는 중복이 많이 발생하는 경우 user_usage 테이블 – SpacePhoenix
테이블 스키마에 항목을 추가하는 코드의 논리를 살펴 봐야합니다. – McNets