【问题标题】:Is there a way to count on a single column?有没有办法计算单列?
【发布时间】:2018-02-24 03:37:52
【问题描述】:
SQL Server:我需要一个包含多列的表,但它还对具有重复项的单个列进行计数。所有记录都是不同的。但我有相同名字的列。我需要统计所有有这个名字的人。我希望它显示每一行的名字、姓氏和客户标识符。我只想创建另一个字段来计算有多少相似的名字。
任何帮助都会很棒!
提前谢谢你
【问题讨论】:
-
-
使用GROUP BY和COUNT会给你一个解决方案like。
标签:
sql
sql-server
count
duplicates
【解决方案1】:
你可以像这样使用它
DECLARE @tbl TABLE(
id INT IDENTITY(1,1),
name VARCHAR(10)
)
INSERT INTO @tbl(name) VALUES('A'),('A'),('B'),('A'),('A')
SELECT T1.id, T1.name, count(T2.name) AS 'name count'
from @tbl T1
INNER JOIN @tbl T2 ON T1.name = T2.name
GROUP BY T1.id, T1.name
输出会是这样的
id name name count
1 A 4
2 A 4
3 B 1
4 A 4
5 A 4
【解决方案2】:
您可以从 Names 表(别名 n)中选择所有字段,将其连接到 FirstName 计数的聚合查询(别名 c)。像这样的:
select n.ID, n.FirstName, n.LastName, c.FirstNameCount
from Names n
left outer join
(
select FirstName, count(*) as FirstNameCount
from Names
group by FirstName
) c
on n.FirstName = c.FirstName
注意:最好使用“左外连接”而不是“内连接”来处理任何 NULL FirstNames。