SQL中如何统计查询结果中某一列重复值的个数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中如何统计查询结果中某一列重复值的个数?相关的知识,希望对你有一定的参考价值。
SQL中如何统计查询结果中某一列重复值的个数?
各位大神好,麻烦请教一下下面的查询语句,能不能在查询结果中添加一列,显示出第一列的查询结果中每个值出现了多少次?
强调一下,并不是我实际的某张表里有多少个重复值,我是想统计出来我查询结果的第一列中每个值的出现的次数。
SELECT md.fsu_device_id,md.device_id,de.device_name,mm.model_name,ml.mete_code,ml.mete_name
FROM t_cfg_monitordevice md
INNER JOIN t_cfg_device de
ON md.device_id=de.device_id
INNER JOIN t_cfg_metemodel mm
ON de.device_model=mm.model_id
INNER JOIN t_cfg_metemodel_detail ml
ON mm.model_id=ml.model_id
ORDER BY md.fsu_device_id ASC
select count(*)over(partition by fsu_device_id) 重复次数,你的字段 from (你上面的select语句)
我写了一个最简单的,也就是在你的语句外面又套了一层,你可以试试能不能不套这一层,不过我没有环境没办法测试,所以就直接套了。 参考技术A 将这几个连接的表表示为表a,再写一个表b,与表a一样,查出fsu_device_id以及出现的次数,然后a与b连接,a表左连接b表,查出最终结果
大体思路就是这样,以下SQL我没有验证,如果有执行错误,自己稍作修改即可
SELECT a.fsu_device_id,b.times,a.device_id,a.device_name,a.model_name,a.mete_code,a.mete_name
FROM
(SELECT md.fsu_device_id,md.device_id,de.device_name,mm.model_name,ml.mete_code,ml.mete_name
FROM t_cfg_monitordevice md
INNER JOIN t_cfg_device de
ON md.device_id=de.device_id
INNER JOIN t_cfg_metemodel mm
ON de.device_model=mm.model_id
INNER JOIN t_cfg_metemodel_detail ml
ON mm.model_id=ml.model_id) a
left join
(SELECT md.fsu_device_id, count(*) times
FROM t_cfg_monitordevice md
INNER JOIN t_cfg_device de
ON md.device_id=de.device_id
INNER JOIN t_cfg_metemodel mm
ON de.device_model=mm.model_id
INNER JOIN t_cfg_metemodel_detail ml
ON mm.model_id=ml.model_id
group by md.fsu_device_id) b
on a.fsu_device_id = b.fsu_device_id
ORDER BY a.fsu_device_id ASC本回答被提问者采纳 参考技术B select number,count(number) from database(database 是你的数据库)
group by number;追问
您好,我的意思是说我想要知道我目前这个语句的查询结果中,第一列的每个值各出现了多少次,并不是说我具体的某张表里有重复值。
SqlServer如何查询表的列数
select count(name) from syscolumnswhere id=( select id from sysobjects where name='表名' and xtype='U')
说明:select id from sysobjects where name='表名' and xtype='U' 从sysobjects 里查询表类型为U(非系统)的表的id ,假设查到的是 1002 ;
select count(name) from syscolumns where id=1002 查的是系统列syscolumns 里表id是1002的列数。
你可以随便建个表,然后分步运行这两句看看 参考技术A select count(*) from sysobjects a join syscolumns b
on a.id=b.id
where a.name='表名'本回答被提问者和网友采纳 参考技术B select a.name as tablename,COUNT(1) as columncount from sysobjects a join syscolumns b
on a.id=b.id
where a.type='u' group by a.name 参考技术C select o.name [表名称],c.name [列名称],* from sys.all_columns c left join sys.all_objects o on c.object_id=o.object_id
where o.type_desc like 'USER_TABLE' 参考技术D select count(*) from 数据表名称;
以上是关于SQL中如何统计查询结果中某一列重复值的个数?的主要内容,如果未能解决你的问题,请参考以下文章