求一条sql

jeezz 2012-12-06 11:20:23
有分数表a
id number eeid
1 -3 1
2 -4 2
3 3 3
如果分数大于95分 优秀
80到95分称职
80以下不称职
当所有人分数都低于95分时 选一个分数最高的为优秀
其它为称职

...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小衲还需努力 2012-12-10
  • 打赏
  • 举报
回复
新手混脸熟!呵呵
jeezz 2012-12-07
  • 打赏
  • 举报
回复
引用 7 楼 ACMAIN_CHM 的回复:
select eeid, case when s=(select max(s) from (select eeid,sum(number) as s from 分数表a group by eeid) x) then '优秀' when s>-5 then '优秀' when s>-20 then '称职' else '不称职' end from (select eeid,sum(numbe……
这个是要创建存储过程。?
ACMAIN_CHM 2012-12-07
  • 打赏
  • 举报
回复
引用 8 楼 jeezz 的回复:
引用 7 楼 ACMAIN_CHM 的回复:select eeid, case when s=(select max(s) from (select eeid,sum(number) as s from 分数表a group by eeid) x) then '优秀' when s>-5 then '优秀' when s>-20 then '称职' else '不称……
不需要
wwwwb 2012-12-06
  • 打赏
  • 举报
回复
用你的数据,结果是什么
ACMAIN_CHM 2012-12-06
  • 打赏
  • 举报
回复
select eeid, case when s=(select max(s) from (select eeid,sum(number) as s from 分数表a group by eeid) x) then '优秀' when s>-5 then '优秀' when s>-20 then '称职' else '不称职' end from (select eeid,sum(number) as s from 分数表a group by eeid) t
rucypli 2012-12-06
  • 打赏
  • 举报
回复
用存储过程实现这种逻辑吧
jeezz 2012-12-06
  • 打赏
  • 举报
回复
顶。。。。。。。。。
jeezz 2012-12-06
  • 打赏
  • 举报
回复
总分100分。 1条记录是一次扣分(负号是扣分)或者加分。。
jeezz 2012-12-06
  • 打赏
  • 举报
回复
引用 1 楼 wwwwb 的回复:
用你的数据,结果是什么
number是分数, eeid是用户id
mysdzlt2007 2012-12-06
  • 打赏
  • 举报
回复
假如你的表里有分数字段score,可以试试
SELECT *,
IF(
(SELECT COUNT(*) FROM `tablename` tmp1 WHERE tmp1.score>95)<1,
IF(
	(SELECT COUNT(*) FROM `tablename` tmp2 WHERE tmp2.score>tmp.score)<1
	,'优秀'
	,'称职'),
IF(score>95,'优秀',IF(score<80,'不称职','称职'))
) AS lev
FROM `tablename` tmp 
ORDER BY score DESC 

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧