【问题标题】:Counting the amount of object with the same value in another column计算另一列中具有相同值的对象的数量
【发布时间】:2020-04-05 23:36:11
【问题描述】:

我想计算重新附加该行的发生次数,但找不到任何好的方法。

所以 1 个表看起来像

 id | value

 1. a
 2. a
 3. b
 4. a
 5. b
 6. b
 7. c
 8. c
 9. a

我想要的结果:

 id | value | count

 1. a,  4
 2. a,  4
 3. b,  3
 4. a,  4
 5. b,  3
 6. b,  3
 7. c,  2
 8. c,  2
 9. a,  4

我只能通过 group by 找到答案,因此不胜感激。这也应该匹配到另一个表,所以如果结果是可连接的,那也会很有帮助。

【问题讨论】:

  • 您使用的是哪个 dbms?

标签: sql database select count window-functions


【解决方案1】:

如果您的RDBMS支持窗口功能,则无需加入:您只需进行窗口计数即可:

select t.*, count(*) over(partition by value) cnt from mytable t

【讨论】:

  • 我还可以添加额外的 where 语句,例如 length(value)>5?
  • @R.vW:是的,只需在查询中添加一个where 子句。由于无论如何我们都是按value 进行分区,所以这不会引起问题。
  • 如果我在哪里为 id 的条件子句添加计数?
【解决方案2】:
select t.id, t.value, tmp.cnt
from your_table t
join
(
  select value, count(*) as cnt
  from your_table
  group by value
) tmp on tmp.value = t.value

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 2022-07-03
    • 2013-08-05
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多