【问题标题】:How can i make a count with different filters in SQLAlchemy - Python如何在 SQLAlchemy - Python 中使用不同的过滤器进行计数
【发布时间】:2020-07-22 20:41:32
【问题描述】:

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

但我做不到。

【问题讨论】:

  • 你为什么不试试 SUM(IF(stage = 'Submtted',1,0)) asmitted_count 之类的东西
  • 为什么不能让它成为可能?应该只是func.count().filter(...):stackoverflow.com/questions/37328779/…

标签: python sql postgresql sqlalchemy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-06-12
    • 2012-02-10
    • 2020-10-05
    • 1970-01-01
    • 2020-12-31
    • 2021-07-21
    • 2014-07-02
    • 2019-04-08
    • 2020-03-22
    相关资源
    最近更新 更多