이 테이블을 만들 필요가 있습니다 (실제로 도넛 용은 아닙니다).Postgres 동적 피벗 테이블
기본적으로 특정 시간 내에 제품을 판매 할 시간을 출력하고 싶습니다.
시간 프레임은 테이블에 정의되어 있으므로 쿼리를 중단하지 않고도 재구성 (삭제 및 재 작성) 할 수 있어야합니다.
즉, 모니터링에 관심이있는 time_frames는 의도적으로 자주 변경됩니다. 오늘날에는 4 개의 시간대 (6 시간)가 정의 될 수 있으며 내일에는 단 하나 (24 시간), 다음 날에는 12 행 (2 EA)이 될 수 있습니다. time_frames는 길이가 다를 수 있습니다. 열은 동일하게 유지됩니다.
CREATE TABLE time_frame
(
id SERIAL NOT NULL
,start_time time
,end_time time
,PRIMARY KEY(id)
);
CREATE TABLE donut_sales
(
saleid SERIAL NOT NULL
,donutid INT
,donutname TEXT
,stocked timestamp
,sold timestamp
,PRIMARY KEY (saleid)
);
-- SELECT * FROM FANCY_PIVOT_TABLE_I_DONT_UNDERSTAND
-- +---------+-------------+----------------+----------------+----------------+
-- | donutid | donutname | time_frame_1 | time_frame_2 | time_frame_3 |
-- +---------+-------------+----------------+----------------+----------------+
-- | 1 | sprinkles | 00:17:66 | 00:17:66 | 00:17:66 |
-- | 2 | jelly | 00:17:66 | 00:17:66 | 00:17:66 |
-- | 3 | custard | 00:17:66 | 00:17:66 | 00:17:66 |
-- +---------+-------------+----------------+----------------+----------------+
"모니터링에 관심이있는 time_frames는 의도적으로 자주 변경됩니다." 당신은 새로운 time_frames 행이 추가되거나 테이블 구조가 변경된다는 것을 의미합니다. "시간 프레임은 테이블에 정의되어 있으며 쿼리를 중단하지 않고 재구성 (삭제 및 재 작성) 할 수 있어야합니다." 같은 구조? –
구조는 동일하게 유지되지만 모든 새 값으로 행을 삭제하고 다시 만들 수 있습니다. 오늘 4 열이 있고 내일은 12가 될 수 있습니다. – gooddadmike