【问题标题】:conditional count on mysql countmysql 计数的条件计数
【发布时间】:2015-09-23 22:33:54
【问题描述】:

我有两张桌子。 工作表。

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 个条目,一个代表白天,一个代表夜间。 否则只有一个条目。

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

job_id      task_entry_count
1           3
2           1
3           2

也就是说,如果 job_type 是 3,那么 count 应该是 count/2。 (早晚)。 其他计数应该是正常计数。

【问题讨论】:

  • 你有没有尝试过?请张贴您试图表明您付出的努力的内容。

标签: mysql math count conditional


【解决方案1】:

您可以像这样获取每个 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 所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2016-03-21
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多