求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.