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

求SQL。不是很难的。解决办法

2012-03-12 
求SQL。。不是很难的。。这次操作涉及到的字段有三个投票者编号候选人投票时间1投票者编号这个地方需要做个去

求SQL。。不是很难的。。
这次操作涉及到的字段有三个
投票者编号           候选人         投票时间

1投票者编号   这个地方需要做个   去除重复的操作
2候选人     这里要统计出每个   候选人被选的次数最多,以及他们都被得了多少票
3投票时间     这里   是分轮投票的,想取     一段时间内的票,这个问题不大,我自己能解决
数据如:
投票者编号           候选人         投票时间
1                                 aa               ....          
2                                 aa               .....                
3                                 bb               ...            
2                                 cc                   ..
3                                 aa
2                                 dd
4                                 xx
。。。。。



[解决办法]
就这个数据,你想得到的结果是什么样的?
投票者编号 候选人 投票时间
1 aa ....
2 aa .....
3 bb ...
2 cc ..
3 aa
2 dd
4 xx

[解决办法]
結果呢?
[解决办法]
create table T(投票者编号 int, 候选人 varchar(10), 投票时间 datetime)
insert T select 1, 'aa ', null
union all select 2, 'aa ', null
union all select 3, 'bb ', null
union all select 2, 'cc ', null
union all select 3, 'aa ', null
union all select 2, 'dd ', null
union all select 4, 'xx ', null

select 候选人, 票数=count(*) from T group by 候选人

--result
候选人 票数
---------- -----------
aa 3
bb 1
cc 1
dd 1
xx 1

(5 row(s) affected)
[解决办法]
select 候选人, 票数=count(*) from T group by 候选人 order by count(*)
排一下序更好些吧
[解决办法]
select 候选人, 票数=count(*) from T group by 候选人 order by count(*) desc

[解决办法]
SELECT 候选人, COUNT(DISTINCT 投票者编号) AS 票数
FROM T
GROUP BY 候选人
ORDER BY 票数 DESC
[解决办法]
select 候选人,count(*) as 票数 from
(select distinct 投票者编号,候选人,投票时间 from [数据表])t
group by t.候选人
------解决方案--------------------


beibeishen() ( ) 正解,用该COUNT DISTINCT.

热点排行