SQL - 计算一个属性,按另一个分组

标签 sql postgresql

我有一张 table staff

staff
pt | ward
P  | 1
P  | 1
T  | 1
P  | 2
T  | 2

我想制作一个表格来计算每个病房有多少个 P 和 T,如下所示:

staff
ward | P | T
1    | 2 | 1
2    | 1 | 1

我试过了

WITH cte(ward, P, T) AS(
SELECT ward,
(SELECT COUNT(PT) FROM staff WHERE PT = 'P' ),
(SELECT COUNT(PT) FROM staff WHERE PT = 'T' ) FROM staff GROUP BY ward)
SELECT * FROM cte

然后我得到这张表

staff
ward | P | T
1    | 3 | 2
2    | 2 | 2

任何帮助将不胜感激

最佳答案

案例陈述将在这里工作:

SELECT
    ward,
    SUM(CASE WHEN pt = P THEN 1 ELSE 0 END) AS P,
    SUM(CASE WHEN pt = T THEN 1 ELSE 0 END) AS T
FROM
    table
GROUP BY
    ward

关于SQL - 计算一个属性,按另一个分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916812/

相关文章:

postgresql - 为什么 ST_MakeValid() 从已定义的几何图形中去除 SRID?

ruby-on-rails - Rails Postgres 如何查询空对象的 jsonb 列?

postgresql - 以适用于 JavaSE 的 JavaEE 友好方式获取计时器(用于 JDBC 驱动程序)

node.js - 无法在 docker compose 服务之间连接到 Postgres 数据库

java - 删除数据库插入的冗余

sql - varbinary 列的唯一约束

mysql - SQL:跨多个表查找产品价格的平均涨幅?

sql - 检查postgresql中逗号分隔列中的逗号分隔字符串

sql - 我将如何加入这个统计数据?

php - Phalcon 在查询中加入多个数据库