提问人:Haus 提问时间:11/1/2023 最后编辑:Cetin BasozHaus 更新时间:11/2/2023 访问量:65
如何对一对多关系中的特定记录进行计数/分类?
How to count/classify specific records in a one to many relationship?
问:
非常感谢您一直以来的帮助。我希望创建一个我的员工服务的县列表,以及一个轻罪调查数量的专栏,以及另一个重罪调查数量的专栏。 未决指控和法院表格概述如下。Court 是 Pending Charges 的父级,Pending Charge 表的 CourtID 列是 Court 表的 ID 列 =,即 JOIN vPendingCharges pc ON pc。CourtID = c.ID。
法庭桌:
编号 | 被告身份证 | 县ID |
---|---|---|
00035ed9 | 编号:2A1E50F9 | 豪斯县 |
000B2A8C | F3dc3251系列 | 索尔县 |
待处理费用表:
编号 | 被告身份证 | 法院ID | 类 |
---|---|---|---|
9F78778D | 编号:2A1E50F9 | 00035ed9 | 3 |
编号:A53A4841 | 编号:2A1E50F9 | 00035ed9 | 2 |
编号:a9d2c5a2 | F3dc3251系列 | 000B2A8C | 一个 |
DAF26CB0型 | F3dc3251系列 | 000B2A8C | 一个 |
期望输出:
县 | 数字重罪 | 数字轻罪 |
---|---|---|
豪斯县 | 1 | 0 |
索尔县 | 0 | 1 |
我也会摆弄你已经提供的东西,这很棒。也许奇迹般地,我首先到达了我想去的地方?.再次感谢您的帮助。
答:
0赞
Cetin Basoz
11/1/2023
#1
您可以使用子查询或 CTE 作为帮助程序。结婚
select ChargeType, count(*)
from (
Select case
when exists (select * from Charges ch
where ch.CourtId = c.CourtId and ch.Class in ('A','B', 'C'))
then 'Misdemeanors' else 'Felony' end as ChargeType
from Courts c
) tmp
group by ChargeType;
编辑:
WITH tmp AS (SELECT CountyID, CASE WHEN EXISTS
(SELECT *
FROM PendingCharge AS pc
WHERE c.ID=pc.CourtID AND pc.Class IN ('M', 'X', '1', '2', '3', '4'))
THEN 'Felony'
ELSE 'Misdemeanor'
END AS ChargeType
FROM Court AS c)
SELECT CountyID,
SUM(CASE WHEN ChargeType='Felony' THEN 1 ELSE 0 END) AS [Number Felony],
SUM(CASE WHEN ChargeType='Misdemeanor' THEN 1 ELSE 0 END) AS [Number Misdemeanor]
FROM tmp
GROUP BY CountyID;
这是 DBFiddle 演示。
评论
1赞
jarlh
11/1/2023
该 FROM 子句子查询称为派生表。
0赞
Haus
11/1/2023
非常感谢您的帮助。一旦我发现我没有正确描述未决指控表和法院表之间的关系。我能够让它正常工作。Pending Charge 表的 CourtID = Court 表的 ID。这很好用。我将稍微玩一下,因为我需要按县来组织它,即 A 县有 10 项重罪和 35 项轻罪。有什么简单的技巧可以将表达式从一行更改为一列吗?再次感谢您的帮助!
0赞
Cetin Basoz
11/1/2023
@Haus,是的。如果您为两个表提供了一些示例数据和所需的输出,那么我可以提供 SQL 和 fiddle 演示。
0赞
Haus
11/1/2023
非常感谢您一直以来的帮助。我试图编辑帖子以包含表格示例,但编辑没有保存,或者我做错了什么。我无法将表格添加到这些“注释”中,也无法设置任何格式以使其易于理解。如果我上面提供的内容无法理解,我将再次破解它。再次感谢您的帮助!
1赞
Haus
11/2/2023
@CetinBasoz 这太完美了!非常感谢你,这将很有帮助,因为我需要将相同的逻辑应用于数据的其他区域!谢谢!
下一个:SQL - 跨列的分组依据值
评论