我正在使用COALESCE返回第一个非null值。在下面的查询中,我试图获取一周中有最新数据/或一些数据的那一天的数据(从周日到周一开始(。所以,假设周日、周二、周一有数据,它应该返回周日的数据。如果所有日子都有数据,它应该会在周日(7日(返回给我数据。但下面的查询并没有返回任何内容。可能是因为返回的值是零行而不是null??
SELECT *
FROM
status_summary
WHERE COALESCE(("day_of_week"(Datetime) = 7),("day_of_week"(Datetime) = 6),
("day_of_week"(Datetime) = 5),("day_of_week"(Datetime) = 4),
("day_of_week"(Datetime) = 3),("day_of_week"(Datetime) = 2),
("day_of_week"(Datetime) = 1))
当我像下面这样运行单个查询时,它会返回数据。
SELECT *
FROM
status_summary
WHERE COALESCE(("day_of_week"(Datetime) = 5))
或
SELECT *
FROM
status_summary
WHERE COALESCE(("day_of_week"(Datetime) = 4))
语法在presto(AWS Athena(中,但我也不介意sql语法。
SQL : datename(day,MyDate) = 'Sunday'
您需要让子选项选择一周中的哪一天,类似于:
SELECT *
FROM status_summary
WHERE day_of_week(Datetime) = (SELECT MAX(day_of_week(Datetime)) FROM status_summary)