[求助]下面的SQL查询如何实现,谢谢

hant 2015-06-02 10:59:13
数据表设计说明:

学生信息(student)
{
userID,
name
}
学生成绩
{id,
useid,
type,/*学科*/
score,/*成绩*/
anno)/*评语*/

数据说明
学生表
userid,name
1,张三
2,李四
学生成绩表
id,useid,type, score, anno
1, 1, 10, 98, hello-0
2, 1, 20, 95, hello-1
3, 1, 40, 96, hello-2
4, 1, 50, 95, hello-3
5, 2, 10, 94, good-0
6, 2, 20, 90, good-1
7, 2, 30, 85, good-2
8, 2, 40, 81, good-3
现在想type为10,20为一组名为Category1,40,50为一组做统计名为Category2,输出下面的表格
userid ,category, anno
1 Category1, hello-0|hello-1
1 Category2, hello=2|hello-3
2 Category1, good-0|good-1
2 Category2, good-2|good-3
其中最后输出的anno是评语的合并项目
...全文
187 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hant 2015-06-12
  • 打赏
  • 举报
回复
ACMAIN_CHM版主的方法可用,学习了Case When的新用法 结贴晚了,谢谢大家支持
WWWWA 2015-06-03
  • 打赏
  • 举报
回复
SELECT IF(ss1 MOD 2=0,'Category2','Category1'), ss1,GROUP_CONCAT(anno ORDER BY id SEPARATOR '|') FROM ( SELECT *,CEILING(id/2) AS ss1 FROM qqt ) aa GROUP BY ss1
ACMAIN_CHM 2015-06-02
  • 打赏
  • 举报
回复
select useid,case type when 10 then Category1 when 20 then Category1 when 50 then Category2 when 40 then Category2 end , group_concat(anno) from 学生成绩表 group by useid,case type when 10 then Category1 when 20 then Category1 when 50 then Category2 when 40 then Category2 end

56,677

社区成员

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

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