首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高分求解 MS SQL语句,待

2012-03-06 
高分求解 MS SQL语句,在线等待。表结构如下:IDUSERSEXAGE1aa男222bb女283aa男224bb女555cc女336bb男447aa男

高分求解 MS SQL语句,在线等待。
表结构如下:

ID           USER       SEX         AGE
1             aa             男           22
2             bb             女           28
3             aa             男           22
4             bb             女           55
5             cc             女           33
6             bb             男           44
7             aa             男           22
8             cc             女           12
9             bb             男           88
10           aa             男           22

我想做个统计,统计出   user   这一列中   相同名字的个数,比如:以上表为例最后的结果是:   叫aa的有4     叫bb的有4个   叫cc的有2个。
目前,表中只知道列名,不知道列中的具体值,请高手帮忙,这样的语句怎么写呀。谢谢了。。在线等待

[解决办法]
select user,count(1) as 个数
from t
group by user

[解决办法]
select user,count(*) from tablename group by user
--if you want count(*)> 1
--then plus: having count(*)> 1
[解决办法]
--创建测试环境
create table t(ID int,[USER] varchar(10),SEX varchar(2),AGE int)

--插入测试数据
insert t(ID,[USER],SEX,AGE)
select '1 ', 'aa ', '男 ', '22 ' union all
select '2 ', 'bb ', '女 ', '28 ' union all
select '3 ', 'aa ', '男 ', '22 ' union all
select '4 ', 'bb ', '女 ', '55 ' union all
select '5 ', 'cc ', '女 ', '33 ' union all
select '6 ', 'bb ', '男 ', '44 ' union all
select '7 ', 'aa ', '男 ', '22 ' union all
select '8 ', 'cc ', '女 ', '12 ' union all
select '9 ', 'bb ', '男 ', '88 ' union all
select '10 ', 'aa ', '男 ', '22 '

--求解过程
select [user],count(1) as 个数
from t
group by [user]


--删除测试环境
drop table t

/*--测试结果
user 个数
---------- -----------
aa 4
bb 4
cc 2

(所影响的行数为 3 行)
*/



[解决办法]
select user,count(*)
from 表名
group by user
[解决办法]
select user,count(*) as 个数
from table
group by user
------解决方案--------------------


走过路过千万不要错过

SELECT user,COUNT(1)
FROM yTABLE
GROUP BY user
[解决办法]
select user,count(*) as cCount
from [table]
group by user
[解决办法]
if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb
(
ID int,
[USER] varchar(10),
SEX varchar(10),
AGE int
)

insert into tb(ID,[USER],SEX,AGE) values(1, 'aa ', '男 ', 22)
insert into tb(ID,[USER],SEX,AGE) values(2, 'bb ', '女 ', 28)
insert into tb(ID,[USER],SEX,AGE) values(3, 'aa ', '男 ', 22)
insert into tb(ID,[USER],SEX,AGE) values(4, 'bb ', '女 ', 55)
insert into tb(ID,[USER],SEX,AGE) values(5, 'cc ', '女 ', 33)
insert into tb(ID,[USER],SEX,AGE) values(6, 'bb ', '男 ', 44)
insert into tb(ID,[USER],SEX,AGE) values(7, 'aa ', '男 ', 22)
insert into tb(ID,[USER],SEX,AGE) values(8, 'cc ', '女 ', 12)
insert into tb(ID,[USER],SEX,AGE) values(9, 'bb ', '男 ', 88)
insert into tb(ID,[USER],SEX,AGE) values(10, 'aa ', '男 ', 22)

select [user] , count(*) as 人数 from tb group by [user]

drop table tb

/*
user 人数
---------- -----------
aa 4
bb 4
cc 2

(所影响的行数为 3 行)
*/
[解决办法]
--try

select [USER], NUM=count(*)
from tbName
group by [USER]
having count(*)> 1

[解决办法]
select user,count(*)
from 表名
group by user
[解决办法]
select user,count(*) from tablename group by user
------------------------------------------------------
好像答案很统一啊!

select user,count(*) from tablename group by user having count(*)> 1
----------------------------------
疑似多此一举,没有用户又如何能统计出个数,所以COUNT(*)不会出现0值


[解决办法]
疑似多此一举,没有用户又如何能统计出个数,所以COUNT(*)不会出现0值
---------------
这是过滤掉count(*)=1 的吧。
[解决办法]
為什么大家都喜歡用count(*),沒有count(1)的效率高,最好是count(主鍵)

本例子,最好用
select [USER], NUM=count(ID)
from tbName
group by [USER]
having count(ID)> 1

或者

select [USER], NUM=count(1)
from tbName
group by [USER]
having count(1)> 1
[解决办法]
select [USER], count(USER)
from tbName
group by [USER]
having count(USER)> 1
[解决办法]
select [user],count(user) from tbname
group by [user]

热点排行