mysql 怎么统计同一字段不重复值的数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 怎么统计同一字段不重复值的数量相关的知识,希望对你有一定的参考价值。

例如有一个表
id name
1 a
2 b
3 c
4 c
5 d
怎么计算字段name中有多少个不相同的值呢~~

有一张这样的表,表名 tdc:

其中,字段 teacher 表示教师名,date 表示星期几,class 表示课程名,用 mysql 查询每个老师周几有几节课,结果如下展示:

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

参考技术A select name,count(*) as '统计结果' from 表名 group by name;
查询表
字段为:name 统计结果(count(*)所有记录)
按照姓名字段进行分组
不对记得告诉我,结果给我看看
参考技术B select count(distinct(name)) from xx本回答被提问者和网友采纳

sql语句统计数量,统计一个字段的值的数量

数据库字段如下
id type level
1 质量 一级
2 服务 二级
3 态度 三级
4 质量 二级
5 态度 一级
现在需要统计的结果为
type 总数量 一级 二级 三级
质量 2 1 1 0
服务 1 0 1 0
态度 2 1 0 1

pivot

--SQL SERVER 2000 静态SQLselect type as type ,
max(case level when '一级' then id else 0 end) 一级,
max(case level when '二级' then id else 0 end) 二级,
max(case level when '三级' then id else 0 end) 三级,
count(id) 总数量
from tb
group by type
然后再汇总,或者可以写个视图就ok了

--SQL SERVER 2000 动态SQL
declare @sql varchar(8000)
set @sql = 'select type '
select @sql = @sql + ' , max(case level when ''' + level + ''' then id else 0 end) [' + level + ']'
from (select distinct level from tb) as a
set @sql = @sql + ' from tb group by type'
exec(@sql)

--SQL SERVER 2005 静态SQL。
select * from (select * from tb) a pivot (max(id) for level in (一级,二级,三级)) b

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + ',' , '') + level from tb group by level
exec ('select * from (select * from tb) a pivot (max(id) for level in (' + @sql + ')) b')
参考技术A select type,count(*) as 总数量,
sum(case when level='一级' then 1 else 0 end) as 一级,
sum(case when level='二级' then 1 else 0 end) as 二级,
sum(case when level='三级' then 1 else 0 end) as 三级
from table group by type

楼上的应该改改吧本回答被提问者采纳
参考技术B select type,sum(*) as 总数量,
sum(case when level='一级' then 1 else 0 end) as 一级,
sum(case when level='二级' then 1 else 0 end) as 二级,
sum(case when level='三级' then 1 else 0 end) as 三级
from table group by type
参考技术C select type,count(1) from table group by type
union all
select level,count(1) from table group by level

以上是关于mysql 怎么统计同一字段不重复值的数量的主要内容,如果未能解决你的问题,请参考以下文章