[英]SQL with aggregate function with two rows
这取决于 ndistrict 是否相同或不同
完全相同的
SELECT COUNT(idcard) FROM Census
WHERE ndistrict = (SELECT DISTINCT ndistrict FROM Polling WHERE name='m1')
如果有多个 ndistrict 使用
SELECT COUNT(idcard) FROM Census
WHERE ndistrict IN (SELECT DISTINCT ndistrict FROM Polling WHERE name='m1')
SELECT count(*) AS votes
FROM (SELECT ndistrict FROM polling WHERE name = 'm1') p
JOIN census USING (ndistrict);
适用于从子查询p
返回的任意数量的行。
它假定该子查询中没有重复项(因为ndistrict
是根据您的表定义进行polling
的 PK),并且idcard
被定义为NOT NULL
(以便更快的count(*)
等效于count(idcard)
。
它返回投票数,不一定与以下内容相同:
在自治市“m1”投票的选民人数(身份证号码)
如果同一选民可以投多票,则计算不同的选民:
SELECT count(DISTINCT idcard) AS voters
FROM (SELECT ndistrict FROM polling WHERE name = 'm1') p
JOIN census USING (ndistrict);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.