python中使用不同的过滤器进行计数

htrmnn0y  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(308)

主要的问题是用sqlalchemy同时计算不同的元素。我想实现以下sql。

SELECT
        metrics_stages.job_id,
        COUNT(*) FILTER(WHERE metrics_stages.stage = 'Submitted') AS submitted_count,
        COUNT(*) FILTER(WHERE metrics_stages.stage = 'Applied') AS applied_count,
        COUNT(distinct metrics_stages.talents_job_id) FILTER(WHERE metrics_stages.if_interview = true) AS interview_count
    FROM metrics_stages
    GROUP BY metrics_stages.job_id

但我不能让它成为可能。

zte4gxcn

zte4gxcn1#

我不知道你用的是什么数据库,在mariadb和mysql中你可以这样做。

SELECT
    metrics_stages.job_id,
    SUM(IF(metrics_stages.stage = 'Submitted',1,0)) AS submitted_count,
    SUM(IF(metrics_stages.stage = 'Applied',1,0)) AS applied_count,       
    COUNT(distinct IF(metrics_stages.if_interviewed = true, metrics_stages.talents_job_id, NULL)) AS interview_count
FROM metrics_stages
GROUP BY metrics_stages.job_id

相关问题