postgresql 은 filter 를 사용 하여 다 차원 집합 을 하 는 해결 방법

당신 은 이런 장면 을 본 적 이 있 습 니까?바로 우리 가 특정한 시간 동안 각종 차원 의 총 체 를 봐 야 한 다 는 것 입 니 다.예 를 들 어 최근 3 년 동안 우 리 는 얼마나 많은 물건 을 팔 았 습 니까?주문서 가 얼마나 있 습 니까?평균 거래 가격 은 얼마 입 니까?가게 마다 얼마나 팔 았 습 니까?거래 에 성공 한 주문 서 는 얼마 입 니까?거래 에 실패 한 주문 서 는 얼마 입 니까?잠깐 만...만약 이 데이터 들 의 내 역 이 한 표 안에 있다 면 이렇게 해 야 하나 요?간단 한 방법 이 있 습 니까?그리고 어떻게 하면 전체 표 스 캔 을 줄 여서 데 이 터 를 얻 을 수 있 습 니까?
만약 에 간단하게 취 합 을 이용 하여 데 이 터 를 얻 으 려 면 sql 을 많이 써 야 할 수도 있 습 니 다.구체 적 으로 모든 문제 에 대해 sql 상호 간 join 을 쓰 는 것 으로 나타 나 면 좋 은 생각 일 수도 있 습 니 다.그러나 충분히 최적화 되 지 않 은 데이터 베이스 시스템 에 대해 모든 문 제 를 해결 하 는 것 은 커 다란 표 스 캔 일 수 있 습 니 다.물론 또 하나의 문 제 는 중복 되 는where조건 입 니 다.그래서 같은where조건 을 추출 하여 sql 을 간소화 할 수 있 습 니까?생각해 보 자.이런 해결책 이 있 을 지도 몰라~(결론 은 있 지,당연히 있 지,하하 하~)
우선 저 는 기본 적 인 표 구조 와 테스트 데 이 터 를 제공 합 니 다.
기본 표 구조

CREATE TABLE "order_info" (
  "id" numeric(22) primary key ,
  "oid" varchar(100) COLLATE "pg_catalog"."default",  --    
  "shop" varchar(100) COLLATE "pg_catalog"."default", --   
  "date" date NOT NULL, --    
  "status" varchar(100) COLLATE "pg_catalog"."default", --     
  "payment" numeric(18,2), --       
  "product" varchar(100) COLLATE "pg_catalog"."default" --     
  );
테이블 데이터 초기 화

INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217794', '16135476150276171', '  2', '2019-07-01', '    ', '139.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217761', '16132502190562224', '  2', '2020-05-01', '    ', '9.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217795', '16122384743927326', '  3', '2019-06-01', '    ', '357.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217796', '16138945194036971', '  2', '2019-05-01', '   ', '59.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217797', '16131909251901209', '  1', '2019-04-01', '    ', '359.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217798', '16135391935074761', '  2', '2019-03-01', '    ', '139.00', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217762', '16132472268456370', '  3', '2020-04-01', '    ', '79.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217763', '16122960304700879', '  2', '2020-03-01', '    ', '357.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217764', '16139491271154103', '  1', '2020-02-01', '    ', '139.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217765', '16122930818314343', '  2', '2020-01-01', '    ', '79.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217766', '12581133644786193', '  3', '2019-12-01', '    ', '79.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217767', '16122904539659361', '  2', '2019-11-01', '    ', '359.00', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217752', '16136227870425525', '  1', '2021-02-01', '    ', '4.90', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217753', '16139781339192958', '  2', '2021-01-01', '    ', '89.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217754', '16136217317281545', '  3', '2020-12-01', '   ', '6.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217756', '16123091065663616', '  1', '2020-10-01', '    ', '95.00', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217757', '16123013684517817', '  2', '2020-09-01', '   ', '79.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217758', '16139678011781848', '  3', '2020-08-01', '   ', '59.90', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217759', '16139576187535157', '  2', '2020-07-01', '    ', '9.90', '    04');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217791', '16132066938478413', '  4', '2019-10-01', '    ', '359.00', '    05');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217792', '12589185047405699', '  5', '2019-09-01', '    ', '6.90', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217760', '16139601047542860', '  1', '2020-06-01', '    ', '359.00', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217837', '16138184483906283', '  4', '2021-03-04', '    ', '359.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217838', '16134581997874325', '  5', '2021-03-04', '    ', '299.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217839', '16131099658443817', '  3', '2021-03-04', '    ', '9.90', '    04');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217840', '16131081649792689', '  2', '2021-03-04', '    ', '15.89', '    05');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217841', '16131087729266410', '  1', '2021-03-04', '    ', '49.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217842', '16138126191679446', '  2', '2021-03-04', '    ', '6.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217843', '16138166422967430', '  3', '2021-03-04', '    ', '579.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217844', '16121412752067761', '  2', '2021-03-04', '    ', '359.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217845', '12580980977280299', '  3', '2021-03-04', '    ', '359.00', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217799', '16135358470437562', '  2', '2019-02-01', '    ', '339.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217800', '16135320673129243', '  1', '2019-01-01', '    ', '299.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217801', '16131874317933316', '  2', '2021-03-04', '    ', '359.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217802', '16131792695743424', '  3', '2021-03-04', '   ', '79.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217803', '16122278134767414', '  2', '2021-03-04', '    ', '99.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217804', '16131790093817033', '  3', '2021-03-04', '    ', '15.89', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217805', '16135230297238674', '  2', '2021-03-04', '    ', '247.81', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217806', '16135220588746073', '  1', '2021-03-04', '    ', '25.79', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217831', '16131159355051065', '  3', '2021-03-04', '    ', '359.00', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217832', '16131196017949185', '  2', '2021-03-04', '    ', '4.90', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217833', '16131207902538323', '  1', '2021-03-04', '    ', '339.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217834', '12580998687179491', '  2', '2021-03-04', '    ', '15.89', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217835', '16138210374123403', '  3', '2021-03-04', '    ', '189.00', '    11');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217836', '16138242030068870', '  2', '2021-03-04', '    ', '39.90', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217846', '16134490408511254', '  3', '2021-03-04', '    ', '238.00', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217847', '16134370276544509', '  2', '2021-03-04', '    ', '100.00', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217854', '16121202131801564', '  1', '2021-03-04', '    ', '359.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217855', '16121178732153257', '  2', '2021-03-04', '    ', '499.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217856', '16130716264223504', '  3', '2021-03-04', '    ', '9.81', '    11');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217857', '16130734211002184', '  2', '2021-03-04', '    ', '9.90', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217858', '16134100289526412', '  5', '2021-03-04', '    ', '359.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217859', '16134103486626066', '  3', '2021-03-04', '    ', '189.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217860', '16121142702989101', '  2', '2021-03-04', '    ', '259.00', '    04');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217861', '16137767910421049', '  1', '2021-03-04', '    ', '299.00', '    05');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217862', '16121018164688502', '  5', '2021-03-04', '    ', '299.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217887', '16120248152353139', '  3', '2021-03-04', '    ', '9.90', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217888', '16136951424489400', '  2', '2021-06-07', '    ', '9.90', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217889', '16136924750406856', '  1', '2021-05-07', '    ', '6.90', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217916', '16119522769335722', '  2', '2021-02-07', '   ', '6.90', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217917', '12588728512745597', '  1', '2021-01-07', '    ', '89.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217848', '16138039330168579', '  2', '2021-03-04', '    ', '314.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217849', '16130922810196821', '  3', '2021-03-04', '    ', '199.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217890', '16136941319549862', '  2', '2021-04-07', '    ', '79.00', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217793', '16135470341712568', '  1', '2019-08-01', '    ', '180.00', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217755', '16132741910343927', '  2', '2020-11-01', '    ', '6.90', '    11');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217807', '16138852921447547', '  2', '2021-03-04', '    ', '238.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217891', '16133225738639350', '  1', '2021-03-07', '    ', '49.00', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217850', '12591040185524596', '  2', '2021-03-04', '   ', '6.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217851', '16130856267945884', '  3', '2021-03-04', '    ', '299.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217852', '16121205784010168', '  2', '2021-03-04', '    ', '19.70', '    11');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217853', '16137863356208213', '  1', '2021-03-04', '   ', '19.70', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217958', '12588659047949994', '  2', '2019-08-07', '    ', '9.90', '    11');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217959', '16117515001200723', '  3', '2019-07-07', '    ', '99.00', '    01');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217960', '16126968285988680', '  2', '2019-06-07', '    ', '6.90', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217985', '12588376827205292', '  3', '2019-05-07', '    ', '337.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217986', '12588344485529392', '  2', '2019-04-07', '    ', '139.00', '    04');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217987', '16125503474522303', '  1', '2021-03-04', '    ', '9.81', '    05');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217988', '16129065212801070', '  2', '2021-03-04', '   ', '359.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217989', '16125466354777343', '  3', '2021-03-04', '   ', '49.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217918', '16136147162483080', '  2', '2020-12-07', '    ', '6.90', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217919', '12580777996543594', '  3', '2020-11-07', '    ', '299.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217926', '16135916055519587', '  2', '2020-04-07', '    ', '359.00', '    04');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217927', '16128748461350415', '  3', '2020-03-07', '    ', '9.90', '    05');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217952', '16130772755076508', '  2', '2020-02-07', '    ', '139.00', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217953', '16130750443205377', '  4', '2020-01-07', '    ', '4.90', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217954', '16117587731623017', '  5', '2019-12-07', '    ', '4.90', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217955', '16127065063959102', '  3', '2019-11-07', '    ', '69.00', '    02');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217920', '16128970251579383', '  2', '2020-10-07', '    ', '90.00', '    03');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217921', '16128964832564531', '  2', '2020-09-07', '    ', '175.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217922', '16135999993916188', '  3', '2020-08-07', '    ', '139.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217923', '16136051439214988', '  2', '2020-07-07', '    ', '9.90', '    06');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217924', '16119347018161682', '  5', '2020-06-07', '    ', '9.90', '    07');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217925', '16132344851576556', '  3', '2020-05-07', '    ', '9.90', '    08');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217956', '16130631650814848', '  2', '2019-10-07', '    ', '79.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217957', '16130549587928221', '  1', '2019-09-07', '    ', '6.90', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217990', '12590493961403993', '  2', '2021-03-04', '    ', '129.00', '    ');
INSERT INTO "order_info"("id", "oid", "shop", "date", "status", "payment", "product") VALUES ('051802588006217991', '16115933800269974', '  1', '2021-03-04', '    ', '79.00', '    ');
질문 하나 준비 해 주세요.
여기 서 저 는 몇 가지 기본 적 인 문 제 를 찾 습 니 다.예 를 들 어 1.우 리 는 최근 2 년(2019,2020)에 몇 건의 거래 가 있 는 지 찾 아야 합 니까?+2.거래 성공 의 평균 가격 은 얼마 입 니까?+3.거래 에 성공 한 주문 서 는 얼마 입 니까?+4.가게 1,2,3 은 각각 얼마 에 팔 렸 나 요?
filter 사용 전
상기 같은 종류의 다 차원 데이터 에 대한 설명 은 여기 서 추천filter입 니 다.학생 들 이 이런 용법 을 기억 할 수 있 지만 우 리 는 간단 한 생각 을 해 보 겠 습 니 다.
만약 에 우리 가 조건 선별 을 하나의 조회 에 넣 으 면(하위 조회 및 표 연결 포함 하지 않 음)끝where조건 내 에 공공 조건 을 설치 한 다음 에 우 리 는filter를 사용 하여 모든 결 과 를 특정한 선별 하면 좋 을 것 입 니 다.
OK,사용 시도filter다음 과 같은 문 제 를 해결 합 니 다.최근 2 년(2019,2020)에 몇 건의 거래 가 있 는 지 찾 아 보 세 요.
문제 풀이
우 리 는 최근 2 년(2019,2020)동안 몇 건의 거래 가 있 었 는 지 에 대해 질문 을 던 졌 다.
이 결과 집 이 정 해진 범 위 는 2019 년 과 2020 년 이 분명 하기 때문에~

select 
	count(1)  as      _20_and_19,
	count(1)  filter  ( where date>=to_date('2020-01-01','yyyy-MM-dd') and date < to_date('2021-01-01','yyyy-MM-dd')  )  as      _20,
	count(1)  filter ( where date>=to_date('2019-01-01','yyyy-MM-dd') and date < to_date('2020-01-01','yyyy-MM-dd')  )  as      _19
from  order_info 
where date   >= date_trunc('year',to_date('2021-07-12','yyyy-MM-dd')+interval '-2 year')::date
and date < date_trunc('year',to_date('2021-07-12','yyyy-MM-dd'))::date
실행 결과:
거래 총 주문20_and_19|거래 총 주문20|거래 총 주문19
----------------------+---------------+---------------
                   45 |            24 |            21
(1 row)
만약 당신 이 filter 자 구 를 처음 사용한다 면,여기 서 제 가 간단하게 검증 해 보 겠 습 니 다.2019 년 에 얼마나 많은 주문 서 를 사 용 했 는 지 검증 해 보 겠 습 니 다.
select count(1)   as 거래 총 주문19  from order_info where date>=to_date('2019-01-01','yyyy-MM-dd') and date < to_date('2020-01-01','yyyy-MM-dd')  ;
 거래 총 주문19
---------------
            21
(1 row)
[주의,당신 이 선택 한 위의 어떤 범위 내의 데 이 터 를 막론하고,반드시 where 조건 을 고려 하여 현재 의 모든 결과 집합의 가장 큰 범 위 를 정 해 야 합 니 다.그렇지 않 으 면 sql 운행 의 결 과 는 예상 에 미 치지 못 합 니 다~]
마지막 으로 첫 번 째 문제 에 대해 참고 sql 을 드 립 니 다.

select 
	count(1)  as      _20_and_19,
	count(1)  filter  ( where date>=to_date('2020-01-01','yyyy-MM-dd') and date < to_date('2021-01-01','yyyy-MM-dd')  )  as      _20,
	count(1)  filter ( where date>=to_date('2019-01-01','yyyy-MM-dd') and date < to_date('2020-01-01','yyyy-MM-dd')  )  as      _19,
	avg(payment) filter (where  status='    ' )  as        ,
	count(1) filter (where  status='    ' )  as         ,
	count(1) filter (where  status!='    ' )  as         ,
	sum(payment) filter (where  status='    ' and shop='  1' )  as   1   ,
	sum(payment) filter (where  status='    ' and shop='  2' )  as   2   ,
	sum(payment) filter (where  status='    ' and shop='  3' )  as   3   
from  order_info 
where date   >= date_trunc('year',to_date('2021-07-12','yyyy-MM-dd')+interval '-2 year')::date
and date < date_trunc('year',to_date('2021-07-12','yyyy-MM-dd'))::date
이 글 은 postgresql 에서 filter 를 사용 하여 다 차원 취 합 을 하 는 것 에 관 한 글 입 니 다.더 많은 postgresql 다 차원 취 합 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기