我正在尝试编写一个输出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有点新意,但我会尽力帮助你。
答案 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