zoukankan      html  css  js  c++  java
  • SQL小技巧

    1. 查询第K大

    SELECT *
    FROM table
    ORDER BY key DESC
    LIMIT k-1, 1
    
    LIMIT m,n : 表示从第m+1条开始,取n条数据;
    LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。
     
    2. 连接
    left join,right join,inner join,full join之间的区别
    https://www.cnblogs.com/lijingran/p/9001302.html
    left join 和 right join 分别只保留左表、右表所有行,连接处笛卡尔乘积
    inner join相当于交集, full join相当于并集
     
    3. group by
     
    可以单个字段使用,也可以多个字段使用
     
    WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。   
    HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。
     
    常用的聚合函数:count() , sum() , avg() , max() , min()
    配合一起使用,可以用在SELECT里面,也可以在HAVING中使用去除掉,例如COUNT结果小于1000的组
     
    4. ROW_NUMBER()
     
    表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
    row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 
     
    5. SELECT嵌套使用
     
    SELECT dept_no, emp_no, salary
    FROM(
        SELECT dept_emp.dept_no, dept_emp.emp_no, salaries.salary, 
        ROW_NUMBER() over(partition by dept_emp.dept_no order by salaries.salary DESC) k
        FROM dept_emp LEFT JOIN salaries
        ON dept_emp.emp_no = salaries.emp_no
    ) A
    WHERE k=1
    ORDER BY dept_no
    
     
  • 相关阅读:
    二叉树的序列化与反序列化
    寻找重复的子树
    [ABC216H] Random Robots
    Codeforces Round #741 (Div. 2)
    [Gym 102798K] Tree Tweaking
    CF798E Mike and code of a permutation
    CF1149E Election Promises
    [BZOJ 4311] 向量
    CF1268D Invertation in Tournament
    [做题笔记] 浅谈势能线段树在特殊区间问题上的应用
  • 原文地址:https://www.cnblogs.com/eastblue/p/15538791.html
Copyright © 2011-2022 走看看