【发布时间】:2019-07-08 03:39:03
【问题描述】:
我有一个列表,每个部分基本上包含相同的字段。
- p_xl_cj_ticket_m_site_data | - p_xl_cj_ticket | - p_xl_cj_ticket_last_row_ingroup
- p_xl_jabo1_ticket_m_site_data | - p_xl_jabo1_ticket | - p_xl_jabo1_ticket_last_row_ingroup
- p_xl_jabo2_ticket_m_site_data | - p_xl_jabo2_ticket | - p_xl_jabo2_ticket_last_row_ingroup
如果我想统计ticket1、ticket2、ticket3 的所有站点总数,我应该怎么做?
预期输出(以上 3 个表格的总和):
当前代码:
SELECT COUNT( * ) AS tot_sites,
IFNULL( COUNT(
CASE WHEN p_xl_cj_m_site_data.m_date_target = DATE( NOW( ) )
THEN 1 ELSE NULL END ) , 0 ) AS todays_target,
IFNULL( COUNT(
CASE WHEN (p_xl_cj_m_site_data.m_date_target = DATE( NOW( ) )
AND p_xl_cj_ticket.t_status =9 )
THEN 1 ELSE NULL END ) , 0) AS todays_achieve,
IFNULL( COUNT(
CASE WHEN p_xl_cj_ticket.t_status =9
THEN 1 ELSE NULL END ) , 0 ) AS tot_in
FROM p_xl_cj_m_site_data
LEFT JOIN p_xl_cj_ticket_last_row_ingroup
ON p_xl_cj_ticket_last_row_ingroup.t_m_id = p_xl_cj_m_site_data.m_id
AND p_xl_cj_ticket_last_row_ingroup.t_req_type = '04_int_finish_ack'
LEFT JOIN p_xl_cj_ticket
ON p_xl_cj_ticket.t_id = p_xl_cj_ticket_last_row_ingroup.t_id
WHERE p_xl_cj_m_site_data.m_status =1
样本数据:
p_xl_cj_ticket_m_site_data p_xl_cj_ticket p_xl_cj_ticket_last_row_ingroup
------------------------------------------------------------------------------------
* m_date_target = 2019-02-13 * t_status = 9 * t_m_id = xxxxx123
* m_status = 1 * t_id = abc * t_id = abc
* m_id = xxxxx123 * t_req_type = 04_int_finish_ack
我当前的代码只是计算 p_xl_cj 的票数。
如果想要做出符合我期望的输出,我该怎么做?
谢谢...
【问题讨论】:
-
让我们帮助您,发布示例数据和该数据的预期输出
-
这种问题是设计不佳的表现
-
你想要什么数据,我会提供@RadimBača
-
只需发布一些示例表(带有数据)和预期输出,我们可以清楚地了解您在做什么
-
@RadimBača 我已经为 p_xl_cj 添加了示例数据,我仍然有 p_xl_jabo1、p_xl_jabo2 类型。但它包含与 p_xl_cj 相同的内容。就像我上面的期望一样,我想查询总数
标签: mysql sql database database-design relational-database