MYSQL sum () с исключением записей - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно вычислить fin_sum для visit_numbers и industry_code, но если id в другой таблице, тогда мне нужно исключить записи, у которых есть id в другой таблице, из расчета, но, если id не является esixst в таблице, они должны быть включены.

У меня есть таблица со следующей структурой

create temporary table client_transactions_final
    (
    id int,
    fin_amount decimal (6,2),
    ind_code varchar(10),
    visit_number int 
    );

insert into client_transactions_final values 
    (1, 100, 'Ind 1', 2),
    (1, 300, 'Ind 2', 3),
    (2, 300, 'Ind 3', 4),
    (2, 100, 'Ind 1', 2),
    (3, 300, 'Ind 2', 3),
    (4, 300, 'Ind 3', 5),
    (5, 100, 'Ind 1', 2),
    (6, 300, 'Ind 2', 5),
    (6, 300, 'Ind 3', 4)


create temporary table term_map
(
id int
);  

insert into term_map values 
    (2),
    (4);

из этой таблицы я запускаю выбор, который суммирует сумму по количеству посещений и отраслевому коду

SELECT visit_number, 

        case when id in (SELECT id FROM term_map) then 
        --sum(fin_amount) do not include ids from SELECT id FROM term_map into 
        else 
        SUM(fin_amount) end revenue
    FROM
        client_transactions_final
    GROUP BY visit_number , ind_code

Как бы то ни было, мне нужно вычислить fin_sum для visit_numbers и industry_code, но если id в другой таблице, тогда мне нужно исключить записи, которые имеют id в другой таблице, из расчета, но, если id не является esixst в таблице, они должны быть включены. Я уже пробовал различные подходы о том, как это сделать, но ни один из них не работает какие-либо идеи, как это сделать?

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте это: -

SELECT visit_number, 
        SUM(fin_amount) revenue
    FROM
        client_transactions_final
        where id not in (SELECT id FROM term_map)
    GROUP BY visit_number , ind_code
...