【问题标题】:Is there a way to count on a single column?有没有办法计算单列?
【发布时间】:2018-02-24 03:37:52
【问题描述】:

SQL Server:我需要一个包含多列的表,但它还对具有重复项的单个列进行计数。所有记录都是不同的。但我有相同名字的列。我需要统计所有有这个名字的人。我希望它显示每一行的名字、姓氏和客户标识符。我只想创建另一个字段来计算有多少相似的名字。

任何帮助都会很棒!

提前谢谢你

【问题讨论】:

  • 提示:GROUP BY.
  • 使用GROUP BYCOUNT会给你一个解决方案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。

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2021-12-15
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多