MySQL根据条件计数和求和

标签 mysql sql

有没有办法计算每个 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

最佳答案

这只是条件聚合:

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

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

关于MySQL根据条件计数和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361125/

相关文章:

c# - 数据表选择产生不正确的列连接

SQL左连接错误

mysql - BigQuery - 根据匹配值或时间戳合并三个表

mysql - 表具有一对多关系还是多对多关系?

mysql - 过滤 MySQL COUNT 查询结果

mysql - 连接 3 个表后,MySQL 返回空结果

python - 如何查询两个表,表1中的某些项与表2没有关联?

php - 优化 MySQL 查询所需的建议

PHP MySQL、页面嵌套/线程注释、LIMIT 10 OFFSET 等

mysql - 如何存储数字序列(或其他集合中的字符序列)?