首页 > 解决方案 > MySQL 根据条件计数和求和

问题描述

有没有办法计算每个 PN 的 SN 并根据条件(在以下情况下为 Loc)求和?

create table table1 (
            code int(10) primary key,
            PN varchar(10) not null,
        SN varchar(10) not null,
                Loc varchar(10));

insert into table1 values (1,'T1','a1','a');
insert into table1 values (2,'T1','a2','a');
insert into table1 values (3,'T1','a3','a');
insert into table1 values (4,'T1','a4','b');
insert into table1 values (5,'T1','a5','b');
insert into table1 values (6,'T1','a6','b');
insert into table1 values (7,'T2','a1','a');
insert into table1 values (8,'T2','a2','a');
insert into table1 values (9,'T2','a3','a');
insert into table1 values (10,'T2','a4','b');
insert into table1 values (11,'T2','a5','b');
insert into table1 values (12,'T2','a6','b');
insert into table1 values (13,'T2','a7','b');

我试图达到的结果是:

PN  a   b
T1  3   3
T2  3   4

标签: mysqlsql

解决方案


这只是条件聚合:

select pn, sum(loc = 'a') as a, sum(loc = 'b') as b
from table1
group by pn;

如果您有一个未知的loc值列表,那么您可能需要一个动态查询。谷歌“MySQL 动态支点”。


推荐阅读