SQL(Presto):当 x 的总和等于某个阈值时返回日期
Posted
技术标签:
【中文标题】SQL(Presto):当 x 的总和等于某个阈值时返回日期【英文标题】:SQL (Presto): Return Date when Sum of x equals some threshold 【发布时间】:2022-01-17 04:49:25 【问题描述】:我有一张桌子,如下所示。我想在 Result 不等于 'na' 的总和等于 4 时返回 Date
Date | ID | Result |
---|---|---|
12-01-21 | a | Negative |
12-01-21 | b | Negative |
12-02-21 | b | Negative |
12-02-21 | c | na |
12-03-21 | d | Positive |
期望的输出:
Date
2021-03-21
最有效的方法是什么? 我对人们在快速搜索中使用的一些元素有所了解,例如一些组合排名函数、内部查询或 WITH,但我不知道要安排的结构或格式。
例如,从逻辑上讲,我在想,当 count(Date) = 4 时拉日期时,按日期对表格进行排名,但我不确定结构。我能想出逻辑,结构对我来说是最难的部分。
感谢您的耐心和时间:)
【问题讨论】:
【参考方案1】:您可以使用SUM() OVER ()
窗口函数和条件,例如
WITH tt AS
(
SELECT t.*,
SUM(CASE WHEN Result!='na' THEN 1 END) OVER (ORDER BY Date) AS rnk
FROM t
)
SELECT Date
FROM tt
WHERE rnk = 4
或ROW_NUMBER()
WITH tt AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY Date) AS rnk
FROM t
WHERE Result!='na'
)
SELECT Date
FROM tt
WHERE rnk = 4
【讨论】:
以上是关于SQL(Presto):当 x 的总和等于某个阈值时返回日期的主要内容,如果未能解决你的问题,请参考以下文章
pandas筛选dataframe数据:指定一个数据列的值不等于某个固定值,而且另外一个数据列的值大于某一阈值