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 怎么统计同一字段不重复值的数量的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL统计不重复值的数量

Mysql 如何在某字段根据(不同产品),进行统计查询?

MySql怎么查询重复的数据

sql 怎么查询不重复数据

sqlserver数某一个值的数量

PHP如何判断输入数据库的字段值不能重复