SQL Join - суммирование COUNT различных значений - PullRequest
3 голосов
/ 03 февраля 2012

Допустим, у меня есть две таблицы оргов и состояний orgs is (o_ID, state_abbr) и состояния (state_abbr, state)

o_ID     state_abbr
1        CT
2        OH
3        OH

state_abbr state
CT         Connecticut
OH         Ohio
Alabama    AL

Я хотел бы создать представление, показывающее счетчик o_ID в каждом состоянии:

state_abbr      state       count
CT              Connecticut 1
OH              Ohio        2

Какой тип SQL-оператора я бы использовал? Те, которые я пробовал, показывают только первое состояние и суммируют все значения.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012
select
    o.state_abbr,
    s.state,
    o.[count]
from states s
inner join
(
    select state_abbr, count(*) as count
    from orgs
    group by state_abbr
) o
on s.state_abbr = o.state_abbr
1 голос
/ 03 февраля 2012

Вы ищете оператор «GROUP BY», в котором вы указываете базе данных, как группировать ваши данные для подсчета. Вам нужно сгруппировать по "state_abbr" и "state", чтобы ваш запрос выглядел так:

SELECT
    states.state_abbr
    , states.state
    , COUNT(*)
FROM
    orgs
    INNER JOIN states ON states.state_abbr=orgs.state_abbr
GROUP BY
    state_name
0 голосов
/ 03 февраля 2012

ВЫБРАТЬ O.STATE_ABBR, S. [СОСТОЯНИЕ], СЧЕТ (S. [СОСТОЯНИЕ]) ИЗ ОРГАНОВ O ВНУТРЕННИХ СОЕДИНЕННЫХ ШТАТОВ S НА O.STATE_ABBR = S.STATE_ABBR GROUP BY O.STATE_ABBR, S. [STATE]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...