【问题标题】:SQL SELECT QuerySQL 选择查询
【发布时间】:2016-01-16 19:53:58
【问题描述】:

假设我有一个包含三列的 SQL 表“Company”:“department_id”、“employee”、“job”。像这样的:

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 查询?我想我尝试了各种各样的东西,但我不明白:(。

【问题讨论】:

  • 请显示您尝试过的内容!

标签: mysql sql select


【解决方案1】:

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

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

【讨论】:

  • 天哪。它完美地工作! :O 非常感谢!!!我试图做这样的事情,但我过去常常使事情复杂化。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
相关资源
最近更新 更多