zoukankan      html  css  js  c++  java
  • 一道一直没弄明白的sql 有关group

    我的答案:

    我的想法就是先把表按照emp_no给合并起来,然后对这个新表t进行筛选最大的工资并且按照部门分组。

    select t.dept_no,t.emp_no,max(t.salary) as maxSalary from 
    (select d.dept_no,d.emp_no,s.salary from dept_emp d
    inner join salaries s on d.emp_no=s.emp_no
     where d.to_date='9999-01-01' and s.to_date='9999-01-01' ) t
     group by t.dept_no
     order by t.dept_no
     

    可以通过的答案:

    SELECT a.dept_no,b.emp_no,a.salary
    FROM 
        (SELECT dept_no,MAX(salary) AS salary
        FROM salaries
        INNER JOIN dept_emp
        ON dept_emp.emp_no=salaries.emp_no
        WHERE dept_emp.to_date = '9999-01-01'
        AND salaries.to_date='9999-01-01'
        GROUP BY dept_no) AS a
    INNER JOIN 
        (SELECT dept_no,dept_emp.emp_no,salary
        FROM dept_emp
        INNER JOIN salaries
        ON dept_emp.emp_no=salaries.emp_no
        WHERE dept_emp.to_date = '9999-01-01'
        AND salaries.to_date='9999-01-01')AS b
    ON a.salary=b.salary
    AND a.dept_no=b.dept_no
    ORDER BY dept_no

    然后主要原因是:mysql select中只能使用group中用过的字段

    否则按我原来的做法maxsala和emp——no是不一定对应的!

  • 相关阅读:
    servlet多线程同步问题
    servlet之request
    servlet方法
    非静态内部类不能有静态成员
    接口与抽象类的区别
    枚举
    Install CUDA 6.0 on Ubuntu 14.04 LTS
    Introduction to Deep Learning Algorithms
    codeblocks 使用汇总
    矩阵奇异值分解(SVD)及其应用
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14488329.html
Copyright © 2011-2022 走看看