【问题标题】:SQL (Presto): Return Date when Sum of x equals some thresholdSQL(Presto):当 x 的总和等于某个阈值时返回日期
【发布时间】: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 时拉日期时,按日期对表格进行排名,但我不确定结构。我能想出逻辑,结构对我来说是最难的部分。

感谢您的耐心和时间:)

【问题讨论】:

    标签: sql window-functions presto rank


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-21
      • 2013-07-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多