我有一张表tbl_casebase
:
kd_casebase kd_penyakit kd_gejala
---------------------------------
1 P01 G01
3 P01 G03
4 P02 G03
5 P02 G04
6 P03 G04
7 P03 G05
8 P03 G06
9 P03 G07
10 P04 G07
11 P04 G08
12 P05 G08
13 P05 G09
14 P05 G10
15 P06 G10
16 P06 G11
17 P06 G12
18 P07 G12
19 P07 G13
20 P07 G14
21 P07 G15
22 P08 G15
23 P08 G16
24 P09 G17
25 P09 G18
我执行第一个选择计数查询:
SELECT
kd_penyakit, COUNT(kd_penyakit) AS count1
FROM
tbl_casebase
WHERE
kd_gejala = 'G01' OR kd_gejala = 'G03'
GROUP BY
kd_penyakit
然后我执行第二个选择计数查询:
SELECT
kd_penyakit, COUNT(kd_penyakit) AS count2
FROM
tbl_casebase
GROUP BY
kd_penyakit
现在我要做的是分割两个结果,所以应该这样:
结果#1:
kd_penyakit count1
-------------------
P01 2
P02 1
结果#2:
kd_penyakit count2
-------------------
P01 2
P02 2
P03 4
P04 2
P05 3
P06 3
P07 4
P08 2
P09 2
分裂过程是这样的:
2/2=1
1/2=0,5
0/4=0
0/2=0
0/3=0
和其他人
那么如何编写查询?
我见过类似的帖子,但它与我想要的不符。
答案 0 :(得分:0)
您可以在count()
函数中使用条件计数 - 条件语句。 Count函数计算任何非null值,因此如果满足条件,则返回非null值,否则返回null。这样就不需要子查询和连接:
SELECT kd_penyakit, COUNT(case when kd_gejala in ('G01','G03') then 1 else null end)/COUNT(kd_penyakit) AS count1
FROM tbl_casebase
GROUP BY kd_penyakit