programing

집계 함수가 있는 테이블의 결합 정보

sourcejob 2023. 8. 7. 22:31
반응형

집계 함수가 있는 테이블의 결합 정보

저는 두 개의 테이블(개인 테이블과 그룹 테이블)을 가지고 있습니다.세 열의 합계를 계산할 수 있는 뷰를 만들고 싶습니다.(콘도네스_엔트레가도스, 윤활유_엔트레가도스 재료_교육용_엔트레가도스).이러한 열은 두 표에 각각 표시됩니다.합계를 얻기 위해 이 열의 SUM을 계산하는 각 테이블에 대한 뷰를 생성해야 했습니다.그리고 나서, 저는 그들 사이의 결합을 수행하기 위해 새로운 뷰를 만들어야 했습니다.길지만 저는 여러 가지 방법을 시도해 보았지만 결코 성공하지 못했습니다.

타블라데 그루팔

   SELECT 
        SUM(`condones_entregados`) AS `total_C`,
        SUM(`lubricantes_entregados`) AS `total_L`,
        SUM(`materiales_educativos_entregados`) AS `total_M`,
        `id_persona_receptora`
    FROM
        `promotor_realiza_actividad_grupal_con_personas_receptoras`
    GROUP BY `id_persona_receptora`

개별 테이블

    SELECT 
        SUM(`condones_entregados`) AS `total_C`,
        SUM(`lubricantes_entregados`) AS `total_L`,
        SUM(`materiales_educativos_entregados`) AS `total_M`,
        `id_persona_receptora`
    FROM
        `promotor_realiza_entrevista_individual`
    GROUP BY `id_persona_receptora`

타블라 최종 상세 내역

    SELECT 
        `i`.`id_persona_receptora` AS `id_persona_receptora`,
        (`i`.`total_C` + `g`.`total_C`) AS `C`,
        (`i`.`total_L` + `g`.`total_L`) AS `L`,
        (`i`.`total_M` + `g`.`total_M`) AS `M`
    FROM
        (`total_grupales` `i`
        LEFT JOIN `total_individuales` `g` ON ((`i`.`id_persona_receptora` = `g`.`id_persona_receptora`)))

중간 보기가 필요하지 않도록 하위 쿼리로 집계한 다음 다음에 참여할 수 있습니다.

SELECT 
    `i`.`id_persona_receptora` AS `id_persona_receptora`,
    (`i`.`total_C` + `g`.`total_C`) AS `C`,
    (`i`.`total_L` + `g`.`total_L`) AS `L`,
    (`i`.`total_M` + `g`.`total_M`) AS `M`
FROM (
   SELECT 
        SUM(`condones_entregados`) AS `total_C`,
        SUM(`lubricantes_entregados`) AS `total_L`,
        SUM(`materiales_educativos_entregados`) AS `total_M`,
        `id_persona_receptora`
    FROM
        `promotor_realiza_actividad_grupal_con_personas_receptoras`
    GROUP BY `id_persona_receptora`
) `i`
LEFT JOIN (
    SELECT 
        SUM(`condones_entregados`) AS `total_C`,
        SUM(`lubricantes_entregados`) AS `total_L`,
        SUM(`materiales_educativos_entregados`) AS `total_M`,
        `id_persona_receptora`
    FROM
        `promotor_realiza_entrevista_individual`
    GROUP BY `id_persona_receptora`
) `g` ON `i`.`id_persona_receptora` = `g`.`id_persona_receptora`

언급URL : https://stackoverflow.com/questions/58457006/about-unions-of-tables-with-aggregate-functions

반응형