【问题标题】:Number of times a value appears (sql)值出现的次数 (sql)
【发布时间】:2019-02-05 17:14:02
【问题描述】:

我目前正在使用 PostgreSQL 服务器。给定一个包含以下内容的表:

New Jersey | Male
New Jersey | Female
New York   | Male

我想返回类似的东西:

New Jersey | Male   | 2
New Jersey | Female | 2
New York   | Male   | 1

我基本上想知道新泽西或纽约出现在表格中的次数,无论是男性还是女性。我也不想摆脱任何行。有什么解决方案吗?谢谢!

【问题讨论】:

  • 将州名放入 city_name 列是相当混乱的。

标签: sql postgresql count duplicates


【解决方案1】:

你需要窗口函数:

select t.*, count(city_name) over (partition by city_name)
from table t;

【讨论】:

    【解决方案2】:

    应该这样做

    SELECT state,
           gender,
           COUNT(1) OVER
             ( PARTITION BY state) fieldYouWant
      FROM Your_Table
    

    【讨论】:

      【解决方案3】:

      只是想你也可以使用子查询和聚合函数

         select distinct t1.*,t2.cnt as count from t t1
          inner join
          (
          select city_name, count(*) as cnt from t
          group by city_name
          ) as t2 on t1.city_name=t2.city_name
      

      http://sqlfiddle.com/#!17/af578/1

      city_name   gender  count
      New York    Male    1
      New Jersey  Female  2
      New Jersey  Male    2
      

      【讨论】:

        猜你喜欢
        • 2017-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多