Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择查询_Mysql_Sql_Select - Fatal编程技术网

Mysql SQL选择查询

Mysql SQL选择查询,mysql,sql,select,Mysql,Sql,Select,假设我有一个SQL表格公司,有三列:部门id、员工、工作。大概是这样的: DEPARTAMENT_ID | EMPLOYEE | JOB -------------------------------------- 1 | Mark | President 1 | Robert | Marketing Manager 1 | Rose | Administration Assitant 2

假设我有一个SQL表格公司,有三列:部门id、员工、工作。大概是这样的:

DEPARTAMENT_ID | EMPLOYEE | JOB
--------------------------------------
1              | Mark     | President
1              | Robert   | Marketing Manager
1              | Rose     | Administration Assitant
2              | Anna     | Programmer
2              | Michael  | Programmer
2              | Celia    | Sales Manager
3              | Jhon     | Sales Manager
3              | Donna    | Programmer
3              | David    | Marketing Manager
我想写一个查询,返回至少50%的工作相同的部门id

在我的示例中,我需要的结果是:

DEPARTAMENT_ID |
--------------------------------------
2              |

如何编写此SQL查询?我想我试过各种各样的东西,但我不明白:。

这有点棘手。你需要将一个部门的工作总人数与总人数进行比较。因此,一种方法使用两个聚合:

select department_id
from (select department_id, count(*) as numemp
      from t
      group by department_id
     ) d join
     (select department_id, max(numemp) as numemp
      from (select department_id, job, count(*) as numemp
            from t
            group by department_id, job
           ) d
     group by department_id
    ) dj
    on d.numemp <= 2 * dj.numemp;

如果你有一个部门正好分为两份工作,你可能会得到重复的工作。在这种情况下,请使用select distinct.

显示您尝试过的内容!天啊。它工作得很好!!!:哦,非常感谢你!!!我试图做这样的事情,但我过去太复杂了。祝您有个美好的一天!!