对mysql计数的条件计数

时间:2015-07-06 17:02:36

标签: mysql math count conditional

我有两张桌子。 job_table。

job_id  job_type    job_type       *****
1       1           Day            *****
2       2           Night
3       3           Day & Night.
4       3           Day & Night. 

和task_entry表。

task_entry_id    job_type       task_option_type
1                1             Day
2                1             Day
3                1             Day
4                2             Night
5                3             Day  
5                3             Night
6                3             Day  
7                3             Night

如果工作ID为3,那么将有2个条目用于Day,一个用于Night。 否则只有一个条目。

我想获得像这样的task_entries的作业总数,

job_id      task_entry_count
1           3
2           1
3           2

即如果job_type为3,则count应为count / 2。 (白天&安培;晚)。 其他计数应该是正常计数。

1 个答案:

答案 0 :(得分:0)

您可以像这样获取每个job_type的计数:

SELECT job_type, COUNT(*) AS task_entry_count
FROM task_entry
GROUP BY job_type;

正如你所说,当job_type为3时,这会使计数加倍。因此,为了解释这一点,你可以使用CASE语句来获取其中一个:

SELECT job_type, CASE WHEN job_type = 3 THEN COUNT(*) / 2 ELSE COUNT(*) END AS task_count
FROM task_entry
GROUP BY job_type;

请记住,我们假设每个job_id = 3有2个条目。如果没有,您将获得一个类似2.5的值,如SQL Fiddle example中所示。