如何对所有重复项进行计数或总和,并使每个唯一数据都有一行

how to put a count or sum to all duplicates and make every unique data has a row

提问人:Joe 提问时间:2/27/2023 最后编辑:Thom AJoe 更新时间:2/27/2023 访问量:42

问:

我有一个名为 Table1 的表,其中包含字段子项、类别和频率。我想通过按类别计数来填充频率。

子项 类别 频率
机 管 局 苹果
BB型 苹果
抄送 香蕉
BB型 葡萄
机 管 局 苹果
机 管 局 香蕉
抄送 香蕉
BB型 葡萄
机 管 局 苹果

我想实现这个输出

子项 类别 频率
机 管 局 苹果 3
机 管 局 香蕉 1
BB型 苹果 1
BB型 葡萄 2
抄送 香蕉 2

我的代码是

 SELECT
 DISTINCT a.Category,
          a.Subkey,
      SUM(Case when a.Category    = 'apple'  then 1 
          when a.Category    = 'banana' then 1
          when a.Category    = 'grapes' then 1
 
 else 0 end) AS Frequency

 FROM Table1 as a
 Group BY Category, Subkey

我似乎没有这个输出。你可以帮我吗?我的sql基于MS SQL Server 2005功能。唯一受支持的操作是 SELECT 语句。

sql-server sql-server-2005

评论

0赞 Thom A 2/27/2023
“我的 sql 基于 MS SQL Server 2005 功能。”您是说您在这里使用的是 SQL Server 2005 吗?
0赞 Thom A 2/27/2023
我不明白你为什么需要这里。为什么不只是)?由于以下原因,当您的数据已经在不同的组中时,为什么要使用?同时具有 和 始终是缺陷的标志。CASECOUNT(CategoryDISTINCTGROUP BYDISTINCTGROUP BY
0赞 Joe 2/27/2023
我的工作使用 SQL 营销云。从我找到的资源中,先生,它使用 SQL Server 2005,或者我不够确定。但唯一支持的操作是 SELECT 语句 sir。
1赞 Thom A 2/27/2023
“它使用 SQL Server 2005”SQL Server 2005 已经有大约 8 年没有支持了;早就该升级您的业务了。
0赞 Sergey 2/27/2023
select t.Subkey,t.Category, count(*)freq from your_table as t group by t.Subkey,t.Category 可能是你需要这个吗?

答:

0赞 siggemannen 2/27/2023 #1

也许我错过了一些东西,但为什么不呢:

select Subkey, Category ,COUNT(*)
FROM Table1 
GROUP BY SubKey, Category

或者,如果要更新某些列:


UPDATE  t
SET frequency = x.frequency
FROM    table1 t
INNER JOIN (
    SELECT  COUNT(*) AS frequency
    ,   subkey, category
    FROM    table1 t2
    GROUP BY subkey, category
    ) x
    ON  x.subkey = t.subkey
    AND x.category = t.category