【问题标题】:SQL: Finding all employees hired on a specific day of the weekSQL:查找在一周中的特定日期雇用的所有员工
【发布时间】:2015-01-22 18:47:55
【问题描述】:

我很难找到在一周中招聘率最高的一天(周一、周二等)录用的所有员工。

例如:如果星期一是雇用人数最多的一天,我想显示一周中这一天雇用的所有员工。

我发现哪些日子招聘人数最多:

SELECT COUNT(*), TO_CHAR(HIRE_DATE,'DAY') DAY
FROM EMPLOYEES
GROUP BY TO_CHAR(HIRE_DATE,'DAY')
HAVING COUNT (*)=(SELECT MAX(COUNT(*))FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY'));

但我无法显示当天雇用的所有员工。提前感谢您的宝贵时间。

【问题讨论】:

    标签: sql oracle count max


    【解决方案1】:

    我不知道 Oracle 语法,但在该查询中加入 EMPLOYEES。类似于:

    SELECT  e.*
    FROM EMPLOYEES e
    INNER JOIN
        (SELECT <employee id>, TO_CHAR(HIRE_DATE,'DAY') DAY
        FROM EMPLOYEES
        GROUP BY TO_CHAR(HIRE_DATE,'DAY')
        HAVING COUNT (*)=(SELECT MAX(COUNT(*))FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY'))) AS empdays
        ON TO_CHAR(e.HIRE_DATE, 'DAY') = empdays.DAY;
    

    【讨论】:

    • 感谢您的快速回答,对我帮助很大,现在可以正常工作了!感谢您的宝贵时间。
    【解决方案2】:

    怎么样:

    select * from employees
    where to_char(HIRE_DATE,'DAY') in
    
    SELECT TO_CHAR(HIRE_DATE,'DAY') DAY
    FROM EMPLOYEES
    GROUP BY TO_CHAR(HIRE_DATE,'DAY')
    HAVING COUNT (*)=(SELECT MAX(COUNT(*))FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY'));
    

    【讨论】:

    • ORA-01427: 单行子查询返回多于一行 01427. 00000 - “单行子查询返回多于一行”
    • 你必须有一个或多个领带才能获得最长雇用日期。
    • 如果您只运行第二部分:SELECT TO_CHAR(HIRE_DATE,'DAY') DAY FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY') HAVING COUNT ()=(SELECT MAX( COUNT())FROM EMPLOYEES GROUP BY TO_CHAR(HIRE_DATE,'DAY'));你得到了什么?
    • 第二部分运行正常,正如我上面提到的。只是不知道如何组合它,所以它显示了在“最大招聘”日雇用的所有员工
    • 但是该选择的实际输出是什么?你有单行吗?
    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2018-09-28
    相关资源
    最近更新 更多