我有这个查询返回不同的列和列的计数。它完美无缺。
SELECT DISTINCT w.title, w.date ,COUNT(f.fid) AS f_count , GROUP_CONCAT(name)
FROM Faculty f
INNER JOIN Attend a ON a.fid = f.fid
INNER JOIN Workshop w ON w.wid = a.wid
WHERE f.did = 1
GROUP BY w.title
ORDER BY w.wid
除了这些字段之外,我还想返回f_count列的SUM。我试图使用像这样的嵌套查询:
SELECT title, date,f_count ,names,COUNT(f_count) AS total_f
FROM (SELECT DISTINCT w.title AS title, w.date AS date,COUNT(f.fid) AS f_count , GROUP_CONCAT(name) AS names
FROM Faculty f
INNER JOIN Attend a ON a.fid = f.fid
INNER JOIN Workshop w ON w.wid = a.wid
WHERE f.did = 1
GROUP BY w.title
ORDER BY w.wid) AS total_fac
SUM将返回正确的值,但我只从内部查询中收到一行。 我知道IN和ANY从子查询返回多行,但我不知道如何在我的情况下使用它。
我的问题是: 如何获取所有行+ COUNT的SUM?
我在这里看了其他问题,但没找到我要找的东西。
答案 0 :(得分:0)
您的子查询返回一行,因为您的计数总和实际上是没有COUNT(*)
子句的结果集/初始GROUP BY
的大小,
由于GROUP BY
,您的日期字段也是随机选择的,这是一个不同的问题。
要将此值放在所有行上是没有必要的。您可以在没有GROUP BY
的情况下再次运行相同的查询。
答案 1 :(得分:0)
@Octopi的答案帮助我弄清楚我的查询有什么问题以及如何正确处理。
我想要的是" 数字"来自参加过任何研讨会的部门的DISTINCT教员。但是,我在问题中发布的上一个查询给了我" 总和"参加研讨会的教职员工(并不明显)。
所以我的方法开始时并不正确。因此,我按原样离开了第一个查询并创建了一个第二个查询,以获取我需要的DISTINCT教员数量如下:
SELECT COUNT(name) AS total_fac FROM (SELECT DISTINCT name
FROM Faculty f
INNER JOIN Attend a ON f.fid = a.fid
WHERE f.did = 1) AS total
这让我想到了我想去的地方。与你讨论这个问题帮助我实现了目标
谢谢:)