gpt4 book ai didi

mysql - 根据同一个表 MySQL 上的另一个字段对字段进行计数和分组

转载 作者:行者123 更新时间:2023-11-29 11:09:56 27 4
gpt4 key购买 nike

我正在尝试通过 MySQL 上同一个表中的另一个字段查找字段计数。我的表如下所示:

Id          DrgId    CodeType IsPrincipal Code
182250051 48261836 I 1 T151
182250055 48261836 I 2 U739
182250059 48261836 I 3 Y929
182250061 48261836 I 4 W444
182250062 48261836 A 2 3006104

所以我想找到 T151 的使用帮助程序代码,即 IsPrincipal 等于 1。

输出应该是这样的:

Code  Helper_I_Count   Helper_A_Count
T151 3 1

所以我尝试像这样:

SELECT t.`Code`,COUNT(v1.`Code`) AS EkTaniSay,COUNT(v2.`Code`) AS IslemSay
FROM TIGPatientCode t,
(
SELECT DRGPatientId,`Code`
FROM TIGPatientCode
WHERE IsPrincipal<>'1' AND CodeType='I'
) v1,
(
SELECT DRGPatientId,`Code`
FROM TIGPatientCode
WHERE IsPrincipal<>'1' AND CodeType='A'
) v2
WHERE t.IsPrincipal='1' AND t.DRGPatientId=v1.DRGPatientId AND t.DRGPatientId=v2.DRGPatientId
GROUP BY t.`Code`

但它不会得到实际计数。

我该如何做到这一点?

谢谢

最佳答案

SELECT t2.Code, 
SUM(t1.CodeType = 'I') AS EkTaniSay,
SUM(t1.CodeType = 'A') AS IslemSay
FROM TIGPatientCode AS t1
RIGHT JOIN TIGPatientCode AS t2 ON t1.DrgPatientId = t2.DrgPatientId
WHERE t1.isPrincipal != 1 AND t2.isPrincipal = 1
GROUP BY t1.DrgPatientId;

查询的第一部分基于 multiple query same table but in different columns mysql 。然后我再次将其与表连接以获取主行的代码。

查询的问题在于,连接两个子查询会创建所有行的叉积,从而导致计数相乘。此外,如果有任何组没有其中一个代码,则该子查询将不会返回任何行,因此该代码的联接将为空。您可以通过在子查询而不是主查询中进行计数来解决第一个问题。第二个问题可以通过使用LEFT JOIN来解决。因此,您的查询的固定版本将如下所示:

SELECT t.Code, v1.EkTaniSay, v2.IslemSay
FROM TIGPatientCode t
LEFT JOIN (
SELECT DRGPatientId, COUNT(*) AS EkTaniSay
FROM TIGPatientCode
WHERE IsPrincipal<>'1' AND CodeType='I'
GROUP BY DRGPatientId
) AS v2 ON t.DRGPatientId = v2.DRGPatientId
LEFT JOIN (
SELECT DRGPatientId, COUNT(*) AS IslemSay
FROM TIGPatientCode
WHERE IsPrincipal<>'1' AND CodeType='A'
GROUP BY DRGPatientId
) AS v1 ON t.DRGPatientId = v1.DRGPatientId
WHERE t.IsPrincipal = 1

DEMO

关于mysql - 根据同一个表 MySQL 上的另一个字段对字段进行计数和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40781151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com