计算MYSQL中的Null值

发布于 2024-09-12 07:05:12 字数 901 浏览 5 评论 0原文

进行交叉表查询时如何计算空值?

我有一个包含三列的表 [id、name、answer]

我有以下记录:

ID  NAME   ANS
1   ABC    1
1   ABC    0
1   ABC    NULL
2   XYZ    1
2   XYZ    NULL
2   XYZ    NULL
2   XYZ    1
2   XYZ    0
1   ABC    0

现在我想得到我的结果:

ID  Name   NULLCOUNT     TRUE COUNT   FALSE COUNT
1   ABC    1             1            2
2   XYZ    2             2            1

我正在使用以下 SQL 语句:

select ID, NAME, 
    sum(case ANS when null then 1 else 0 end) as NULLCOUNT,
    sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
    sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from 
    TBL1
 Group By ID, Name

获取我的结果:

ID  Name   NULLCOUNT     TRUE COUNT   FALSE COUNT
1   ABC    0             1            2
2   XYZ    0             2            1

NULL 计数出现错误。为什么以及如何解决这个问题?

How do i count null values while making cross tab query?

I have a table with three colums [id, name, answer]

i have following records:

ID  NAME   ANS
1   ABC    1
1   ABC    0
1   ABC    NULL
2   XYZ    1
2   XYZ    NULL
2   XYZ    NULL
2   XYZ    1
2   XYZ    0
1   ABC    0

now i would like to get my result:

ID  Name   NULLCOUNT     TRUE COUNT   FALSE COUNT
1   ABC    1             1            2
2   XYZ    2             2            1

I am using following SQL Statement:

select ID, NAME, 
    sum(case ANS when null then 1 else 0 end) as NULLCOUNT,
    sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
    sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from 
    TBL1
 Group By ID, Name

Getting my result:

ID  Name   NULLCOUNT     TRUE COUNT   FALSE COUNT
1   ABC    0             1            2
2   XYZ    0             2            1

The NULL Count is getting error. Why and how can i solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

变身佩奇 2024-09-19 07:05:12

我相信而不是这个:

 sum(case ANS when null then 1 else 0 end) as NULLCOUNT

你应该使用这个:

 sum(case when ANS is null then 1 else 0 end) as NULLCOUNT

I believe instead of this:

 sum(case ANS when null then 1 else 0 end) as NULLCOUNT

You should use this:

 sum(case when ANS is null then 1 else 0 end) as NULLCOUNT
美煞众生 2024-09-19 07:05:12

空->为空?

null -> is null?

白色秋天 2024-09-19 07:05:12

NULL 甚至不与自身进行比较,您可以使用“CASE WHEN ANS is NULL”(您还缺少 GROUP BY)。或者尝试:

select ID, NAME, 
    sum(if(ans IS NULL, 1, 0)) as NULLCOUNT,
    sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
    sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from 
    TBL1
group by ID,NAME

NULL doesn't even compare with itself, you could use "CASE WHEN ANS is NULL"(you're also missing GROUP BY). Or try:

select ID, NAME, 
    sum(if(ans IS NULL, 1, 0)) as NULLCOUNT,
    sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
    sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from 
    TBL1
group by ID,NAME
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文