MySQL - Postgres:将多行包装成一行

时间:2014-06-23 09:14:07

标签: mysql postgresql

以下是当前行的示例:

id    sdate    subject    exam1    assgn1    overallmark    result    credits
____________________________________________________________________________
 1    082013   Math      40.0      0.00       33             F         7.50
 2    082013   Math      0.0       25.00      33             F         7.50
 3    082013   Science   80.0      0.00       76             P         7.50

这就是我想要的:

id    sdate    subject    exam1    assgn1    overallmark    result    credits
____________________________________________________________________________
 1    082013   Math      40.0      25.00       33             F         7.50

要点我想将同一主题的多个结果包装成一行,最好的方法是什么?我曾尝试使用GROUP_CONCAT,但我的mysql知识并不准确。

我一直在使用简单的MySQL查询来在第一个代码块中显示此结果:

SELECT * FROM exam_results WHERE sdate = :sdate AND studno = :studno

修改*

感谢用户@echo_Me,这个解决方案有效:

select id ,sdate,subject,sum(exam1)exam1,sum(assgn1)assgn1,overallmark,result,
credits from exam_results group by studno,subject

但是,在postgres中可以使用相同的语法吗?我如何相应地更改它以适应postgres安装?

2 个答案:

答案 0 :(得分:2)

试试:

  select id ,sdate,subject,sum(exam1)exam1,sum(assgn1)assgn1,overallmark,result,
  credits
  from exam_results
  group by studno,subject

答案 1 :(得分:0)

我不确定你要尝试的是什么,但你可以看一下关于群组结尾的帖子:CONCAT with GROUP_CONCAT in mysql

根据您的预期结果,我并没有真正看到group_concat需要。如果你想获得exam1的最小值,只需要按积分或sDate,然后选择MIN(exam1)。 如果要在一个中返回来自不同行的值,则使用组串联。例如:总体标记= 33,33,76