sql - 在聚合函数中指定列值与使用 WHERE 子句
问题描述
我想计算state='CA'
.
我的第一次尝试是:
SELECT COUNT(state='CA')
FROM people
;
这返回了 1 行,值为 1000。所以我认为数据库中有来自 CA 的 1000 人。
事实证明这是不正确的。我知道它们是 127,我可以通过查询来验证
SELECT COUNT(*)
FROM people
WHERE state='CA'
;
它返回 1 行,值为 127。
我了解第二个查询的工作原理。但是,我不明白第一个有什么问题。它在返回什么?
解决方案
如果您想查看发生了什么,请运行以下查询:
select state='CA' from people;
您将看到 people 中的每一行都会得到一个结果,值为 0 或 1(或 True/False)。您选择的是每行是否 state='CA',并且这些结果的数量与行数一样多。
您不能在语句中限制 COUNT 语句,您必须像第二个示例中那样通过 WHERE 子句来执行此操作。
推荐阅读
- google-app-engine - 用于私人访问的 App Engine 防火墙规则
- spring-mvc - Thymleaf ,使用 jQuery 加载片段
- c# - 两个不同内容大小的 ScrollViewer 同步滚动
- vb.net - 实体框架选择与分组依据
- java - java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android.os.Bundle.getString(java.lang.String)'
- mysql - 在 MY-SQL 中将多个不存在的值一起插入。其中“NULL”应该是唯一的
- awk - 如何在双引号内使用 awk 变量?
- c - 这段代码是什么意思?fopen (pthis -> fname,w)
- hadoop - 如何使用 InputStream 读取 orcFile?
- apache-spark - 在 Spark 中安排任务