group by 和order by的相关知识

用于在查询结果集中对记录进行分组,以汇总数据或者为整个分组进行单行的汇总。

GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。


一、GROUP BY

GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN,MAX)联合使用来得到一个或多个列的结果集。目的是将结果汇总。

语法如下:

SELECT column1, column2, ... column_n, aggregate_function (expression)            

FROM tables            

WHERE predicates            

GROUP BY column1, column2, ... column_n;

因为聚合函数通过作用于一组数据而只返回一个单个值,因此,在SELECT语句中出现的元素要么为一个聚合函数的输入值,要么为GROUP BY语句的参数,否则会出错。

他的作用就是将产生的结果分类汇总。我们测试一下,如果不加group by 会发生什么。果然,不加group by 报错



我们可以理解成,我group by 语法为了显示分组,我们按照id 进行分组,然后分别按照各个组的统计各自的记录数量。

一般如:
select 单位名称,count(职工id),sum(职工工资) form [某表]
group by 单位名称

这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。


 ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序。

GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

例如:SELECT dep.department_name, MAX(emp.salary), MIN(emp.salary)  
          FROM departments dep  
LEFT JOIN employees emp  
ON (dep.department_id = emp.department_id)  
GROUP BY dep.department_name  
--order by 的列,应该出现在group by 子句中   
ORDER BY dep.department_id DESC

group by a,b,c       则a,b,c三个字段是按照先按a字段对数据行进行排序,再按b字段对那些字段a为同一个值的数据行进行排序,再再按c字段对那些字段a为同一个值且字段b为同一个值的数据行进行排序.

order  by a,b,c   也是如此。

故而

表T 有a,b,c三个字段,按a分组再按c排序的方法如下:

select * from T order  by a,c//两个字段顺序不能颠倒。













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章