我请求帮助是因为我不太了解 SQL。
我需要连接两个表并计算第二个表中的一些值的出现次数,以达到统计表的效果,该表将具有列:
结果表:
- 国家 varchar(20),
- 网站 varchar(20),
- 长时间怀疑违反,
- 确认违规时间长,
- Confirm_no_violation long,
- not_determined long,
- 总长
我的结果表需要有前两列(contry 和 site)来自第一个表“Violations”,接下来的 5 列将包含 Status 表中每个可能的 id 值中的“Violations”中出现的 status_id 的数量(计数)。
现在我可以上传我想要实现的表格结果图像:
所以,我有两个表:违规和状态。
违规行为:
- 身份证长,
- 国家 varchar(20),
- 网站 varchar(20),
- status_id long, <--这是状态表中的状态id。
- ...在这种情况下其他列不重要
地位:
- 身份证长,
- status long 列“status”具有映射到字符串值的值 (1-4):Suspected Violation (1)、Confirmed Violation (2)、Confirmed No Violation (3)、未确定 (4)
我加入的结果是拥有应该包含列的表:
- 来自违规表:“国家/地区”和“网站”
- 来自状态表:“怀疑违规”、“确认违规”、“确认无违规”、“未确定”、“总计”(其中此列是违规表中出现的计数器)。
我的伪代码和抽象尝试:
SELECT v.country, v.site, count(v.status_id == 1), count(v.status_id == 2), count(v.status_id == 3), count(v.status_id == 4)
FROM Violations v JOIN Status s
ON v.status_id=s.id
GROUP BY v.country, v.site
请帮助我编写正确的 sql 查询,因为这样做有很大的问题。