当前位置:首页 » 编程语言 » sqlcount不重复数据
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlcount不重复数据

发布时间: 2022-11-04 18:41:52

1. sql语句如何对有重复出现的数据进行不重复的计数

select distinct id from Table where 加你条件就行

2. sql中count(0)是什么意思

意思和count(*)或者count(column)是一样的

COUNT() 函数返回匹配指定条件的行数。

语法

(1). SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_nameSQL

(2). COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_nameSQL

(3). COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

(2)sqlcount不重复数据扩展阅读:

SQL 实例

现在,我们希望计算 "Orders" 表中不同客户的数目。

我们使用如下 SQL 语句:

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders结果集类似这样:

这是 "Orders" 表中不同客户(Bush, Carter 和 Adams)的数目。

3. sql count时,去掉重复行

select count(T.A) from (select distinct(有重复的字段名) as A from 表名 )T

4. sql中怎么在同一个表中列出两个列不重复的数据

sql 查询不重复的记录 可以使用 having count group by 组合

先把不重复数据的id查询出来 通过count()计算 只有数目为1的才是不重复的数据
然后通过in选择出不重复记录的数据
例子:
统计出a表中name不重复的所有记录
select b.* from table b where b.id in(select a.id from table a group by a.name having count(a.id) <2)
//其中 name重复的数据的列名

5. sql语句求解COUNT (CASE WHEN THEN***)排除重复项

可以用count函数,但是else时用null值,不能用0,即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE null END)
这个else还可以不写,因为默认情况下不写就是空值。即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO END)

6. SQL Server如何利用count(*)统计一张去掉重复记录的总行数

Select count(*)from [table] where id in (select distinct max(id) from [table] where gsmc like '%碳资产%' group by stockcode)
在第二条查询Max(id)的语句中增加distinct查询出的id记录都是唯一,没有重复记录。

7. 数据库中count的用法

数据库中count的用法的用法你知道吗?下面我就跟你们详细介绍下数据库中count的用法的用法,希望对你们有用。

数据库中count的用法的用法如下:

count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。

SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。

例如:SELECT COUNT(*) FROM student;

COUNT(DISTINCT 字段),返回不同的非NULL值数目;若找不到匹配的项,则COUNT(DISTINCT)返回 0 。

这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问

对于事务型的存储引擎(InnoDB, BDB), 存储一个精确行数的问题比较多,原因是可能会发生多重事物处理,而每个都可能会对行数产生影响。

例, 创建用于测试的数据表,以进行count数据统计:

CREATE TABLE `user` (

`id` int(5) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(10) DEFAULT NULL,

`password` varchar(10) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

测试数据为:

1 name1 123456

2 name2 123456

3 name3 123456

4 name4 NULL

请注意以下查询的返回结果:

1,select count(*) from `user`

2,select count(name) from `user`

3,select count(password) from `user`

输出结果:4,4,3

原因分析:

1,count(*)是对行数目进行计数,所以结果为4。

2,count(column_name)是对列中不为空的行进行计数,所以count(name)=4,而count(password)=3。

以上二点,在使用count函数时,要注意下。

使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:

mysql> SELECT owner, COUNT(*) FROM pet;

ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)

with no GROUP columns is illegal if there is no GROUP BY clause

COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。

每种动物的数量:

mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;

+---------+----------+

| species | COUNT(*) |

+---------+----------+

| bird | 2 |

| cat | 2 |

| dog | 3 |

| hamster | 1 |

| snake | 1 |

+---------+----------+

每种性别的动物数量:

mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;

+------+----------+

| sex | COUNT(*) |

+------+----------+

| NULL | 1 |

| f | 4 |

| m | 4 |

+------+----------+

(在这个输 出中,NULL表示“未知性别”。)

按种类和性别组合的动物数量:

mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| bird | NULL | 1 |

| bird | f | 1 |

| cat | f | 1 |

| cat | m | 1 |

| dog | f | 1 |

| dog | m | 2 |

| hamster | f | 1 |

| snake | m | 1 |

+---------+------+----------+

若 使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:

mysql> SELECT species, sex, COUNT(*) FROM pet

-> WHERE species = 'dog' OR species = 'cat'

-> GROUP BY species, sex;

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| cat | f | 1 |

| cat | m | 1 |

| dog | f | 1 |

| dog | m | 2 |

+---------+------+----------+

或, 如果你仅需要知道已知性别的按性别的动物数目:

mysql> SELECT species, sex, COUNT(*) FROM pet

-> WHERE sex IS NOT NULL

-> GROUP BY species, sex;

+---------+------+----------+

| species | sex | COUNT(*) |

+---------+------+----------+

| bird | f | 1 |

| cat | f | 1 |

| cat | m | 1 |

| dog | f | 1 |

| dog | m | 2 |

| hamster | f | 1 |

| snake | m | 1 |

+---------+------+----------+

顺便提下mysql的DISTINCT的关键字有很多你想不到的用处

1.在count 不重复的记录的时候能用到

比如SELECT COUNT( DISTINCT id ) FROM tablename;

就是计算talbebname表中id不同的记录有多少条

2,在需要返回记录不同的id的具体值的时候可以用

比如SELECT DISTINCT id FROM tablename;

返回talbebname表中不同的id的具体的值

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义

比如SELECT DISTINCT id, type FROM tablename;

实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样

4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的

5.其实还有另外一种解决方式,就是使用

SELECT id, type, count(DISTINCT id) FROM tablename

虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)

返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了

8. sql 去掉重复数据 和统计

drop table T_Count
create table T_Count(iId int identity(1,1), cValue varchar(30) default '')
Go

Insert into T_Count(cValue)
Select 'a,b,c'
union all select 'b,c,d,e'
union all select 'a,c,d,f'
union all select 'a,c'
Go

select sum(case when cValue like '%a%' then 1 else 0 end) iCount_A
,sum(case when cValue like '%b%' then 1 else 0 end) iCount_B
,sum(case when cValue like '%c%' then 1 else 0 end) iCount_C
,sum(case when cValue like '%d%' then 1 else 0 end) iCount_D
,sum(case when cValue like '%e%' then 1 else 0 end) iCount_E
,sum(case when cValue like '%f%' then 1 else 0 end) iCount_F
from T_Count
Go
这样取的话就不能取出在同一行记录有重复的字符。如果在同一行有重复的字符也要加进去的话就麻烦多了

9. sql count会把一样的数据算进去吗

一定要使用GROUP BY。
一定要使用GROUP B,排序,不然只会出来一个总数。
在SQL的语法中,count函数主要用于计算数据的行数。使用count函数的 时候,会有多种情况。在使用count函数的时候,优先使用count(*)进行查询,在where条件中 减少使用 age=1,(如果这个字段没有建立索引,查询就直接不走索引,直接扫描全表)。在count(column)中最好column也是主键,这样才会直接走索引,提高查询的效率。

10. SQL用count统计不重复记录的方法

楼上的做法自己试过么?是不对的
假设4列,为a,b,c,d:
select count(s.a) from(
select a from db1
group by a,b,c,d
) s