日期:2014-05-18  浏览次数:20477 次

?MS-sql中的分组问题
朋友们能否给个group   by的全解释,并举些例子,谢谢。是好是有中文。

------解决方案--------------------
--------我的电脑是英文的,所以没有中文的语法,只能给这个英文的--------

SELECT [ ALL | DISTINCT ]
[ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]
< select_list >
[ INTO new_table ]
[ FROM { < table_source > } [ ,...n ] ]
[ WHERE < search_condition > ]
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]
[ HAVING < search_condition > ]
------解决方案--------------------
GROUP BY 子句
指定用来放置输出行的组,并且如果 SELECT 子句 <select list> 中包含聚合函数,则计算每组的汇总值。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。

说明 如果未指定 ORDER BY 子句,则使用 GROUP BY 子句不按任何特定的顺序返回组。建议始终使用 ORDER BY 子句指定具体的数据顺序。

语法
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]



------解决方案--------------------
例子:
成绩表 score
scoreID stuName courseName score
1 tom 语文 80
2 jim 语文 70
3 tom 数学 90
4 jim 数学 80

可以分组查询每个科目的平均分
select courseName, '科目平均分 '=avg(score) from score group by courseName
查询结果:
courseName 科目平均分
语文 75
数学 85