gpt4 book ai didi

mysql - SQL 查询 - 按工作日从两个表中计数

转载 作者:行者123 更新时间:2023-11-29 21:40:27 25 4
gpt4 key购买 nike

我有以下两个(MySQL)表,名为“Jobs”和“Employees_Jobs:”

工作:

job_id     job_creation_date
1 2016-01-01
2 2016-01-02

Employees_Jobs(工作申请):

EJ_job_id  EJ_creation_date
1 2016-01-02
2 2016-01-02
2 2016-01-03

我希望 MySQL 返回创建的职位数量,以及每周每天创建的职位申请数量;获取上面的数据应该返回:

weekday  num_of_jobs_entered  num_of_applications_entered
Friday 1 0
Saturday 1 2 // corrected from 1
Sunday 0 1 // 2

我现在有以下查询:

SELECT
DAYNAME(job_creation_date) as weekday,
(SELECT COUNT(*) FROM Jobs) as num_of_jobs_entered,
(SELECT COUNT(*) FROM Employees_Jobs) as num_of_applications_entered
FROM
dual
GROUP BY
weekday
ORDER BY
weekday;

我做错了什么?

谢谢!

最佳答案

试试这个:

SELECT wd, COUNT(jcnt), COUNT(ecnt) FROM
(SELECT DAYNAME(job_creation_date) wd, 1 jcnt, null ecnt FROM Jobs UNION ALL
SELECT DAYNAME(EJ_creation_date), null, 1 FROM Employees_Jobs ) a
GROUP BY wd

参见here一个工作示例。

编辑

如果我理解正确的话,您想要将上面计算的工作机会和要求的数量除以当年的当前周数(当然,只有当所有考虑的工作数量也发生在当年时,这才有意义-> 可能需要进行一些过滤)。

但是,如果没有过滤,您也可以进行

SELECT week_day, Week(CURDATE()) weekCurrdate,
COUNT(num_of_jobs_entered)/Week(CURDATE()) avg_of_jobs_entered,
COUNT(num_of_applications_entered)/Week(CURDATE()) avg_num_of_applications_entered
FROM (
SELECT DAYNAME(job_creation_date) week_day, 1 num_of_jobs_entered,
null num_of_applications_entered FROM Jobs UNION ALL
SELECT DAYNAME(EJ_creation_date), null, 1 FROM Employees_Jobs ) A
GROUP BY week_day;

IFNULL() 函数已过时,但您必须在外部 select 中使用 COUNT() 代替.由于当前周数为 1,因此此查询的结果(目前!)与上一个查询的结果相同,请参阅修改后的 fiddle here .

关于mysql - SQL 查询 - 按工作日从两个表中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34575745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com