我无法找到它,我确信它很简单。
表(196行)
tech, name, area, manager
------------------------------
Joe,mary,pa,sally
Kim,brad,ga,tim
kelly,Joe,pa,sally
Joe,jose,pa,sally
将技术分配给多个名称/区域/经理。我想做一个报告,显示表格的所有行,其中一列显示技术的分配数量。
我想要的结果
tech, name, area, manager, (count of number of tech assignments)
Joe,mary,pa,sally,2
Kim,brad,ga,tim,1
kelly,Joe,pa,sally,1
Joe,jose,pa,sally,2
答案 0 :(得分:3)
我猜你想要SELECT
子句上的子查询:
SELECT
name,
area,
manager,
(SELECT COUNT(*) FROM tablename WHERE tech = x.tech) AS assignments
FROM tablename x
这是一种可能更有效的方法来做同样的事情:
SELECT
t.name,
t.area,
t.manager,
sub.assignments
FROM tablename t
INNER JOIN (
SELECT tech, COUNT(*) AS assignments
FROM tablename
GROUP BY tech
) sub
ON sub.tech = t.tech
答案 1 :(得分:1)
select
a.tech, a.name, a.area, a.manager,
b.cnt
from table a, (
select count(*) cnt, tech
from table
group by tech) b
where a.tech=b.tech;
这是你想要的吗?
答案 2 :(得分:0)
SELECT tech, count(name) AS total_records FROM db_table GROUP BY tech
不确定这是你正在寻找的东西。 哦,是的,看起来你真的需要使用子查询。 感谢有帮助的例子。
答案 3 :(得分:0)
SELECT tech, name, area, manager, assignments
FROM table
INNER JOIN (
SELECT tech, COUNT(*) AS assignments
FROM table
GROUP BY tech
) t
USING (tech)
<强> 说明: 强>
从表中选择所有列,并将它们与包含技术列的表和具有特定技术的表中的行数连接起来。关键字USING说这两个表是如何合并的。