MYSQL sum()与排除记录

问题描述 投票:0回答:1

我需要为visit_numbers和industry_code计算fin_sum,但是如果在其他表中的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

但是我需要为visit_numbers和industry_code计算fin_sum,但是如果在其他表中的id,那么我需要从计算中排除其他表中具有id的记录,但是如果id在表中不是esixst,则应该包括它。我试图尝试使用difrentaproaches如何做到这一点,但不是它的任何想法如何做到这一点?

mysql sum case
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.