【问题标题】:How to count values from multiples columns of the same table如何计算同一个表的多个列中的值
【发布时间】:2019-05-24 09:54:34
【问题描述】:

我正在尝试构建一个 SQL 语句,该语句从位于同一个表中的多个列中返回唯一的非空值。

我尝试使用“sum”和“case”来创建此 SQL 语句,就像在另一个 stackOverflow 主题中所说的那样,但它不起作用。

我也试过这个:

Select count(distinct SYMPTOM_I, SYMPTOM_II, SYMPTOM_III, SYMPTOM_IV) 
from DIAGNOSTIC_MEDVIR;
    Create table DIAGNOSTIC_MEDVIR(
        NIP varchar(32) not null,
        DIAGNOSTIC_TIME int not null,
        DAY_TIME varchar(32) not null,
        SEX varchar(8) not null,
        AGE int not null,
        SYMPTOM_I varchar(64) not null,
        SYMPTOM_II varchar(64),
        SYMPTOM_III varchar(64),
        SYMPTOM_IV varchar(64),
        PATHOLOGY_I varchar(64) not null,
        PATHOLOGY_II varchar(64),
        PATHOLOGY_III varchar(64),
        Constraint NIP_PK primary key(NIP),
        Constraint CK_SEX check (SEX='Male' or SEX='Female'),
        Constraint CK_DAYTIME(DAY_TIME='Morning' or DAY_TIME='Evening' or                                 
        DAY_TIME='Night')
    );

假设我已经进入了这张表:

Insert into DIAGNOSTIC_MEDVIR 
values ('195889419', 60, 'Morning', 'Male', 68, 'fever',
        'sore throat', 'headache', , 'throat infection', , );

Insert into DIAGNOSTIC_MEDVIR 
values ('195889420', 67, 'Morning', 'Female', 38, 'fever', 
        'headache', , , 'cold', , );

我想要:

fever: 2
sore throat: 1
headache: 1

【问题讨论】:

  • 插入查询错误。 “列名或提供的值的数量与表定义不匹配。”
  • 为什么是headache: 1?不应该是2吗?

标签: sql netbeans-8 javadb


【解决方案1】:

这种设计是有问题的,证据就是解决方案本身。
如果您决定添加具有第 5 个症状的另一列怎么办?
您必须更改所有内容,所有返回信息的查询,例如这个问题。
无论如何,在这种情况下,您需要分别获取每个 SYMPTOM_X 列的结果并使用 UNION 将它们组合起来。然后分组得到总结果:

select t.symptom, count(*) counter from (
  select SYMPTOM_I symptom from DIAGNOSTIC_MEDVIR
  union all
  select SYMPTOM_II from DIAGNOSTIC_MEDVIR
  union all
  select SYMPTOM_III from DIAGNOSTIC_MEDVIR
  union all
  select SYMPTOM_IV from DIAGNOSTIC_MEDVIR
) t
where t.symptom is not null
group by t.symptom

请参阅demo
结果:

> symptom     | counter
> :---------- | ------:
> fever       |       2
> headache    |       2
> sore throat |       1

【讨论】:

  • 您对我的数据库的设计是正确的,我现在正在尝试制作一个合适的(尝试使用 n-m 关系)。无论如何,真的感谢您的帮助!抱歉回复晚了,我遇到了一些问题--'...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多