我有两个名为“作业”和“MySQL”的表(MySQL):
职位:
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;
我做错了什么?
谢谢!
发布于 2016-01-03 11:39:07
试试这个:
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
有关工作示例,请参见这里。
编辑
如果我正确地理解了您的意思,那么您希望将上面计算的招聘数量和要求除以当前年度的当前周数(当然,只有在当前年度的->中也发生了所有考虑过的职务计数时,这才有意义),可能需要进行一些筛选)。
但是,在没有过滤的情况下,您可以
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
,所以这个查询的结果将(当前!)与前面的查询相同,请参阅修改后的小提琴在这里。
https://stackoverflow.com/questions/34575745
复制相似问题