连接表和计数实例

时间:2017-11-30 20:30:07

标签: sql sql-server

我正在尝试执行以下操作

我想计算风险代码被拨打的次数,并将其按风险代码分组,但如果它没有风险代码,我想将其命名为无风险代码并计算多少次它似乎

表格调用数据包含以下内容

Number|Name|Contacttime|userref
075   |Jim | 10:00     | 1112
072   |Jim | 10:01     | 1112
077   |Bob | 10:00     | 1111
099   |Jane| 10:01     | 1000

RiskTable

Number|Name|RiskGroup  |userref
075   |Jim |H          | 1112
072   |Jim |M          | 1112
077   |Bob |L          | 1111

2 个答案:

答案 0 :(得分:0)

SELECT COUNT(*), b.RiskGroup
FROM CallData a
JOIN RiskTable b
ON a.Number = b.Number
GROUP BY b.RiskGroup;

我认为应该为GROUP BY处理的每个RiskGroup提供COUNTS。 JOIN将两个表链接到公共字段Number。 至于给一个空白的RiskGroup一个不同于默认值(null)的名字,我不太清楚如何处理它。

也许尝试做这个单独的查询?

SELECT COUNT(*) as NoRiskCode
FROM CallData a
WHERE a.Number NOT IN (
    SELECT Number FROM RiskTable
);

这会计算CallData表中有多少条记录,这些记录中的数字不会存在于RiskTable中。

答案 1 :(得分:0)

你的意思是这样的吗?

with cte as ( 
select u.name, isnull(riskgroup, 'NoRisk') as riskGroup from CallData as u  
left join RiskTable as r on r.name = u.name  )

select count(*) , riskgroup from cte group by riskGroup 

结果样本:

count       riskgroup
----------- --------------------
2           H
1           L
2           M
1           NoRisk