python - 如何在 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
但我不能让它成为可能。
解决方案
我不确定您使用的是什么数据库,在 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
推荐阅读
- solidity - 无法在可靠的函数中使用合约数组
- flowtype - FlowJS 和具有 2 个签名和可选参数的函数
- amazon-web-services - 在 AWS AppSync 中更新在线/离线状态
- python - 是否有适合基于某些标准将数据集细分为块的算法/模型?
- c++ - C++ 异步线程
- kotlin - 更改高度和颜色选项卡指示器
- java - Tomcat重写url给出404,而直接浏览给出200
- javascript - 如何使 div 标签与 state(react.js) 中的数字一样多
- excel - 当工作表处于非活动状态或窗口最小化时,无法设置 OLEObjects 属性
- python - Pybind11 Wrapper通过引用传入时非法调用非静态成员函数