Количество раз, когда значение появляется (sql) - PullRequest
0 голосов
/ 30 августа 2018

В настоящее время я работаю на сервере PostgreSQL. Дана таблица, содержащая:

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

Я хочу вернуть что-то похожее на:

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

Я хочу узнать, сколько раз в таблице появляется Нью-Джерси или Нью-Йорк, независимо от того, мужчина это или женщина. Я также не хочу избавляться от каких-либо строк. Любое решение вокруг этого? Спасибо!

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Это должно сделать

SELECT state,
       gender,
       COUNT(1) OVER
         ( PARTITION BY state) fieldYouWant
  FROM Your_Table
0 голосов
/ 30 августа 2018

просто мысль, что вы также можете использовать подзапрос и агрегатную функцию

   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
0 голосов
/ 30 августа 2018

Вам нужна оконная функция:

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