SQL语句附加行中的计数结果

SQL语句附加行中的计数结果,sql,oracle,count,Sql,Oracle,Count,我正试图获得下面代码所提供的总成员数的3%,但是结果让我返回了两行,一行是%,另一行是“0”,不知道为什么或者如何摆脱它 select sum(Diabetes_FLAG) * 100 / (select round(count(medicaid_no) * 0.03) as percent from membership) AS PERCENT_OF_Dia from prefinal group by

我正试图获得下面代码所提供的总成员数的3%,但是结果让我返回了两行,一行是%,另一行是“0”,不知道为什么或者如何摆脱它

select 
    sum(Diabetes_FLAG) * 100 / (select round(count(medicaid_no) * 0.03) as percent
                                from membership) AS PERCENT_OF_Dia
from 
    prefinal
group by 
    Diabetes_Flag
不知道为什么它会带回第二行我只需要%而不是第二行

不知道我做错了什么

输出:

        PERCENT_OF_DIA
   1    11.1111111111111
   2    0

如果需要一行,请删除“分组依据”:

select sum(Diabetes_FLAG)*100/( SELECT round(count(medicaid_no)*0.03) as percentt
 from membership) AS PERCENT_OF_Dia
from prefinal;
当您包括
groupbydiabetes\u标志
时,它会为
Diabetes\u标志
的每个值创建一个单独的行。根据您的结果,我猜它的值为0和1

不知道为什么它又带来了第二排

这就是分组查询的工作方式。group by子句按给定列对数据进行分组,也就是说,它收集该列的所有值,生成一组不同的值,并为每个值显示一行。 请考虑这个简单的演示:


通常,在SELECT子句中也会列出GROUP BY column,如下所示:

SELECT Diabetes_Flag, sum(Diabetes_Flag)
FROM prefinal
GROUP BY Diabetes_Flag;

| Diabetes_Flag | sum(Diabetes_Flag) |
|---------------|--------------------|
|             1 |                  2 |
|             5 |                  5 |
如您所见,分组方式显示两行-每一行对应
Diabetes\u Flag
列的唯一值


如果从SELECT子句中删除
Diabetes\u标志
column,将得到与上述相同的结果,但不包括此列:

SELECT sum(Diabetes_Flag)
FROM prefinal
GROUP BY Diabetes_Flag;

| sum(Diabetes_Flag) |
|--------------------|
|                  2 |
|                  5 |


因此,得到2行的原因是
Diabetes\u Flag
在表中有2个distict值

prefinal
表中必须有两个不同的
Diabetes\u标志值(可能是
NULL
?)。您可能需要在糖尿病标志不为NULL的位置添加
。当您运行
时,从prefinal中选择distinct Diabetes\u Flag
?换句话说。。。将
Diabetes\u Flag
添加到您的选择中,以便更好地了解结果。因为你们在求和,我们可以假设数字,因为我假设1或0;也假定为0,因为null=null之和不为零,并且由于输出显示为0。。。假设旗帜中有1,0。所以
where Diabetes\u Flag 0
谢谢大家。我得到的是空值和“0”,结果是“0”。当我把一个
放在Diabetes\u Flag='1'
的位置时,我得到了我的结果。如果Diabetes\u Flag是数字数据类型,你不应该使用撇号。如果不是数字;你真的不应该把它加起来。如果有人加了一个新的旗子,有一天会发生什么呢A'或'B'表示I型或II型?我最喜欢你的答案,因为它明确地表明了
diabetes\u flag
等于1的期望。但是,
分组BY
现在不是不必要了吗?是的,它是不必要的;除非有人将U标志更改为1,并添加除1或0以外的新标志。
SELECT Diabetes_Flag, sum(Diabetes_Flag)
FROM prefinal
GROUP BY Diabetes_Flag;

| Diabetes_Flag | sum(Diabetes_Flag) |
|---------------|--------------------|
|             1 |                  2 |
|             5 |                  5 |
SELECT sum(Diabetes_Flag)
FROM prefinal
GROUP BY Diabetes_Flag;

| sum(Diabetes_Flag) |
|--------------------|
|                  2 |
|                  5 |