SQL Join - 汇总不同值的COUNT

时间:2012-02-03 03:38:18

标签: sql join

假设我有两个表组织和状态 orgs是(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 个答案:

答案 0 :(得分:3)

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 :(得分:1)

您正在寻找“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

答案 2 :(得分:0)

SELECT O.STATE_ABBR,S。[STATE],COUNT(S。[STATE])FROM ORGS O INNER JOIN 状态在O.STATE_ABBR = S.STATE_ABBR GROUP BY O.STATE_ABBR,S。[STATE]