• GROUP BY 和 ORDER BY 的一起使用


    GROUP BY 和 ORDER BY一起使用

    写程序也有很长的一段时间了,有些东西我总不曾去思考,很少去积累一些有用的东西,总喜欢“用要即拿”的心态来对待,这是非常不好的坏习惯。这样只会造成依赖心太强,每当遇到一些小小的问题都需要去翻资料。就好像今天写一条查询语句的时候,连group by 和 order 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_name DESC

    错误使用如下:(执行后报错:ORA-00979:不是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 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

    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//两个字段顺序不能颠倒

    或者

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

  • 相关阅读:
    CDQ分治·学习笔记
    高斯消元板子
    [HEOI2012]朋友圈
    [CTSC2008]祭祀
    Medium | LeetCode 140. 单词拆分 II | 回溯(递归)
    Hard | LeetCode 212. 单词搜索 II | 回溯 + 前缀树
    Medium | LeetCode 131. 分割回文串 | 回溯 + 动态规划预处理
    Hard | LeetCode 329. 矩阵中的最长递增路径 | 矩阵+DFS
    Hard | LeetCode 76. 最小覆盖子串 | 滑动窗口
    Medium | LeetCode 130. 被围绕的区域 | 矩阵 + DFS
  • 原文地址:https://www.cnblogs.com/bigmall/p/7124861.html
Copyright © 2020-2023  润新知