MYSQL sum()排除记录

时间:2018-09-06 02:33:48

标签: mysql sum case

我需要计算fin_sum的visit_numbers和industry_code,但是如果其他表中的id则需要从计算中排除其他表中具有id的记录,但是,如果id在表themn中不是第六,则应包括在内。

我有具有下一个结构的表

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);

我正在从此表中选择按visit_numbers和行业代码对groyp求和

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

Howewer我需要计算fin_sum的visit_numbers和industry_code,但是如果其他表中的id则需要从计算中排除其他表中具有id的记录,但是,如果id在表themn中不是最重要的,则应包括在内。我已经尝试过difrentaproaches如何做到这一点,但没有任何想法如何做呢?

1 个答案:

答案 0 :(得分:0)

尝试一下:-

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