gpt4 book ai didi

mysql - 在单个查询中从同一个表中获取不同状态 ID 集的计数

转载 作者:行者123 更新时间:2023-11-29 18:21:06 25 4
gpt4 key购买 nike

以下是查询。请建议我如何简化:

在查询中,我必须选择具有指定提交状态 ID 的电子邮件生成计数。正如您所看到的,我必须从同一个表中获取计数,但我仍然必须为不同的提交状态集提供单独的查询。

SELECT  a.id, a.created_at, a.recruiter_id,
CONCAT_WS(' ', first_name, middle_name, last_name) as f_name,

(select count(*) from email_generations where email_generations.candidate_id = a.id and
email_generations.submission_status_id = 2) as subm_count,

SUM((select count(*) from submission_statuses where submission_statuses.id IN (7,8) and submission_statuses.id =
email_generations.submission_status_id)) as phn_intw_count,

SUM((select count(*) from submission_statuses where submission_statuses.id IN (9,10) and submission_statuses.id =
email_generations.submission_status_id)) as intw_count,

SUM((select count(*) from submission_statuses where submission_statuses.id IN (12,13) and submission_statuses.id =
email_generations.submission_status_id)) as offer_count,

SUM((select count(*) from submission_statuses where submission_statuses.id IN (11) and submission_statuses.id =
email_generations.submission_status_id)) as ref_chk_count

FROM candidates AS a

INNER JOIN email_generations ON email_generations.candidate_id = a.id WHERE a.deleted_at IS NULL

GROUP BY a.id HAVING a.recruiter_id = 1 and (subm_count <> 0 OR phn_intw_count <> 0 OR intw_count <> 0 OR offer_count <> 0 OR
ref_chk_count <> 0)

表:Email Generation Table Structure, Submission Statuses Table Structure

**所需的输出应该类似于下面的示例 - **

<table border="0" cellspacing="0">
<colgroup span="2" width="85">
</colgroup>
<colgroup width="174">
</colgroup>
<colgroup width="85">
</colgroup>
<colgroup width="110">
</colgroup>
<colgroup span="2" width="85">
</colgroup>
<colgroup width="92">
</colgroup>
<tbody>
<tr>
<td align="left" height="17"><b>Candidate ID</b></td>
<td align="left"><b>Recruiter ID</b></td>
<td align="left"><b>Candidate Name</b></td>
<td align="left"><b>subm_count</b></td>
<td align="left"><b>phn_intw_count</b></td>
<td align="left"><b>intw_count</b></td>
<td align="left"><b>offer_count</b></td>
<td align="left"><b>ref_chk_count</b></td>
</tr>
<tr>
<td align="right" height="17" sdnum="16393;" sdval="258">11258</td>
<td align="right" sdnum="16393;" sdval="1">1</td>
<td align="left">Test Candidate</td>
<td align="right" sdnum="16393;" sdval="0">4</td>
<td align="right" sdnum="16393;" sdval="0">2</td>
<td align="right" sdnum="16393;" sdval="0">9</td>
<td align="right" sdnum="16393;" sdval="1">1</td>
<td align="right" sdnum="16393;" sdval="0">3</td>
</tr>
</tbody>
</table>

最佳答案

感谢 friend 们度过的美好时光。我自己优化了查询,分享给大家。

感谢 @user3366016 提供从电子邮件生成而不是候选人中获取记录的提示。

SELECT DISTINCT candidates.id, candidates.created_at, candidates.recruiter_id, CONCAT_WS(' ', candidates.first_name, candidates.middle_name, candidates.last_name) as f_name,

(select count(*) FROM email_generations AS e WHERE e.submission_status_id = 2 and e.candidate_id = candidates.id) AS subm_count,

(select count(*) FROM email_generations AS e WHERE e.submission_status_id IN (7,8) and e.candidate_id = candidates.id) AS phn_intw_count,

(select count(*) FROM email_generations AS e WHERE e.submission_status_id IN (9,10) and e.candidate_id = candidates.id) AS intw_count,

(select count(*) FROM email_generations AS e WHERE e.submission_status_id IN (12,13) and e.candidate_id = candidates.id) AS offer_count,

(select count(*) FROM email_generations AS e WHERE e.submission_status_id IN (11) and e.candidate_id = candidates.id) AS ref_chk_count

FROM email_generations

INNER JOIN candidates ON candidates.id = email_generations.candidate_id AND candidates.deleted_at IS NULL

WHERE email_generations.deleted_at IS NULL AND (candidates.recruiter_id = 1 and email_generations.submission_status_id IN (2,7,8,9,10,12,13,11))

HAVING (subm_count <> 0 OR phn_intw_count <> 0 OR intw_count <> 0 OR offer_count <> 0 OR ref_chk_count <>0)

关于mysql - 在单个查询中从同一个表中获取不同状态 ID 集的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46579379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com