有这个查询:
SELECT
r.id_nomenclature,
n.name AS "name_nomenclature",
COUNT(n.name) OVER (PARTITION BY rg.id_rsd_group) AS "count_nomenclature",
rg.id_rsd_group AS "id_group",
r.id AS "id_expend"
FROM rsd AS r
LEFT JOIN rsd_group AS rg ON rg.id_rsd = r.id
LEFT JOIN nomenclature AS n ON n.id = r.id_nomenclature
GROUP BY
r.id_nomenclature, n.name, n.id, rg.id_rsd_group, r.id
ORDER BY
rg.id_rsd_group DESC;
这是它的输出:
我需要在 count_nomenclature 中记录同一 id_group 中相同 name_nomenclature 的数量。但是这个查询计算了 id_group 中所有 name_nomenclature 的数量,即使它说的是 COUNT(n.name)。
原来写的COUNT(n.name)等同于COUNT(*),应该是不一样的。
后置数据库管理系统。怎么修?

COUNT(n.name)计算n.name不为 NULL 的行数。您需要具有相同
name和的行数id_group?如果是,那么试试这个: