首页 > 解决方案 > 如何在 SQLAlchemy - Python 中使用不同的过滤器进行计数

问题描述

主要问题是同时用 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

但我不能让它成为可能。

标签: pythonsqlpostgresqlsqlalchemy

解决方案


我不确定您使用的是什么数据库,在 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

推荐阅读