SQL COUNT 值 返回 0

有一个表:统计表

字段:单位名称

字段.单位名称的值有:

单位A
单位A
单位A
单位B
单位B
单位C
单位D

================================
执行了查询语句后:

SELECT 单位名称, COUNT(单位名称)
FROM 统计表
WHERE (单位名称 = '单位A' OR
单位名称 = '单位B' OR
单位名称 = '单位C' OR
单位名称 = '单位D' OR
单位名称 = '单位E' OR
单位名称 = '单位F')

GROUP BY 单位名称
ORDER BY COUNT(单位名称) DESC

================================
查询结果为:

单位A 3
单位B 2
单位C 1
单位D 1

由于表中暂时没有 单位E 和 单位F 的值,所以无法显示。

现在我想查出来的结果也把单位E 和 单位F显示出来,并且是返回 0 请问SQL语句怎么写?

最终要的查询结果为:

单位A 3
单位B 2
单位C 1
单位D 1
单位E 0
单位F 0

sql 中 count()作用是返回结果集的记录数。
返回0,即
1、检索结果记录数为0
2、指定列非空记录为0

1、SQL COUNT() 语法
SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name

2、SQL COUNT(*) 语法
COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name

3、SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-04
你的单位E 和单位F 要在其他表里有也可以,否则只能写死了。

SELECT 单位名称, COUNT(单位名称)
FROM 统计表
WHERE (单位名称 = '单位A' OR
单位名称 = '单位B' OR
单位名称 = '单位C' OR
单位名称 = '单位D' OR
单位名称 = '单位E' OR
单位名称 = '单位F')

GROUP BY 单位名称
ORDER BY COUNT(单位名称) DESC
union all
select ‘单位E’,0
union all
select '单位F',0
第2个回答  2011-09-04
如果你的单位名称是外键的话就可以,或者几个单位全部union all

select '单位A', count(1) from 统计表 where 单位名称 = '单位A'
union all
select '单位B', count(1) from 统计表 where 单位名称 = '单位B'
依次。。。。
再进行排序就可以了追问

如果另外一个表中含有单位名称的信息,那么应该怎么写SQL查询语句?
如: 统计表, 单位信息表

统计表.单位名称:
单位A
单位A
单位A
单位B
单位B
单位C
单位D
============================
单位信息表.单位名称:
单位A
单位B
单位C
单位D
单位E
单位F
.........
=========================
要显示同上查询结果。

求SQL完整的语句,谢谢!!

追答

SELECT b.单位名称, COUNT(b.单位名称)
FROM 单位信息表 b left join 统计表 a
on a.单位名称=b.单位名称
GROUP BY b.单位名称
ORDER BY COUNT(b.单位名称) DESC

本回答被提问者和网友采纳
第3个回答  2011-09-04
不会
第4个回答  2011-09-04
你要知道你是从数据库查数据,而不是想查什么就能查什么,数据库都没有E和F,你怎么可能查出来这种结果啊追问

那能设定 单位E 和 单位F 值为 NULL 的时候返回为0吗?

追答

首先是查不出E和F,所以也不会显示E和F这两条数据

相似回答