繁体   English   中英

使用 SQL 的多家公司的员工人数最多的 position

[英]Largest number of job position of employees at a multiple Companies using SQL

我试图找出最受欢迎的工作 position 员工在多家公司工作。 但是,如果出现平局,则将两者都添加到表中。

我有一个名为 employees_data.txt 的文件。 我有他们的姓名、公司、工作 position 和年龄。

Natali, Google, IT, 45
Nadia, Facebook, Sales, 25
Jacob, Google, IT, 32
Leonard, Bing, Custodian, 65
Kami, Amazon, Driver, 43
Paul, Facebook, Engineer, 31
Ashley, Walmart, IT, 34
Robert, Fedex, IT, 27
Rebecca, Ups, Driver, 29
Mal, Apple, Custodian, 73
Erin, Bing, Sales, 38

我知道预期的结果应该是 IT position,我只是不确定 sql 命令可以通读并跟踪位置。

任何帮助是极大的赞赏!

感觉像功课:laugh:

您需要一个聚合(计数、总和、最小值、最大值等)和一个分组依据

select count(*), position
from t
group by position

https://www.db-fiddle.com/f/dUqdZaUGpHTAYv8vH1YhU1/0

为了只返回“顶级记录”,我们可以像这样使用带有 row_number 计算的自联接......这可能是一种更简单、更简洁的方法,但你明白了。

SELECT count(*) as recordcount, t.position
FROM t
INNER JOIN (
    SELECT *
        ,row_number() OVER (
            ORDER BY recordCount DESC
            ) AS rn
        
    FROM (
        SELECT count(*) AS recordCount
            ,position
        FROM t
        GROUP BY position
        ) as a
    ) d ON t.position = d.position
    AND d.rn = 1

group by t.position

https://www.db-fiddle.com/f/dUqdZaUGpHTAYv8vH1YhU1/1

您希望使用 window function 进行聚合。 那是:

select p.*
from (select position, count(*) as cnt,
             rank() over (order by count(*) desc) as seqnum
      from t
      group by position
     ) p
where seqnum = 1;

在最新版本的 Postgres 中,您甚至不需要子查询,因为它现在支持with ties

select position, count(*) as cnt
from t
group by position
order by count(*) desc
fetch first 1 row with ties;

我怀疑您的作业需要按照以下方式进行查询:

select job_position
from employees_data
group by job_position
order by count(*) desc
fetch first 1 row with ties

假设表为call jobpositions,列如下:name、company、position、age

我会使用:

select * from ( select position, COUNT(position) as countpos, ROW_NUMBER() OVER(ORDER BY count(position) DESC) as numpos from jobpositions group by position order by count(position) desc ) tb1 where tb1.numpos=1

这似乎在 postgres 中工作,我喜欢它,因为它很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM