我有两张桌子。 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。 (白天&安培;晚)。 其他计数应该是正常计数。
答案 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中所示。