根据另一个表中的信息有条件地从一个表中求和

时间:2018-04-04 23:55:24

标签: mysql sql

我正在尝试编写一个输出python脚本数据的SQL查询。 python脚本最终会将数据推送到表中以使事情更顺畅,我决定将输出转换为char。

我所拥有的数据按15分钟组织。数据A和数据B存储在一个表中,并具有列start_time(作为日期时间),计数A和计数B.第二个表具有start_time(作为日期时间),并计数C.

我需要的是每天A,B和C的总和。但是,我想有条件地求和它只计算其中两个数据计数在15分钟内不为NULL的总和。例如,如果15分钟周期的“行”具有A和B但不是C的数据,则不计入总和。我该如何实现这个条件?

示例输出:

date| SUM(A) | SUM(B) | SUM(C)

我可以在没有条件的情况下编写(对sql来说是新的):

SELECT 
    DATE('timezone conversion') AS date,

    cast(SUM(p1.COUNT_DATA_A) as char)
    AS A,

    cast(SUM(p1.COUNT_DATA_B) as char)
    AS B,

    cast(SUM(p2.COUNT_DATA_C) as char)
    AS C
FROM
    table_data_A_B
    AS p1

    LEFT JOIN table_data_C 
    AS p2 ON p1.start_time = p2.start_time

WHERE
    DATE('timezone conversion') >= '2018-03-27'
        AND DATE('timezone conversion') < '2018-03-29'
GROUP BY DATE('timezone conversion')
ORDER BY DATE(p1.start_time) DESC    

如何在此查询中实现条件?我很感激帮助。我对stackoverflow,编码和sql有点新意,但我会尽力帮助你。

1 个答案:

答案 0 :(得分:1)

只需在查询的WHERE子句中对此进行测试。

WHERE DATE('timezone conversion') BETWEEN '2018-03-27' AND '2018-03-29'
AND p1.COUNT_DATA_A IS NOT NULL AND p1.COUNT_DATA_B IS NOT NULL AND p2.COUNT_DATA_C IS NOT NULL
相关问题