【问题标题】:SQL Query - How to get count where current row values in between previous rowsSQL 查询 - 如何计算当前行值在前几行之间的位置
【发布时间】:2021-05-03 02:01:52
【问题描述】:

所以,我必须根据ID 计算FromTo 之间的FromTo Type B 总数。 我无法用好话来形容它,所以这是示例和我的预期结果(专栏Count):

ID  | Type | From | To | Count
-------------------------------
100 | A    | 10   | 14 | 
100 | A    | 16   | 18 | 
100 | B    | 12   | 14 | 1
100 | B    | 11   | 13 | 1
100 | B    | 17   | 18 | 1
120 | A    | 5    | 10 | 
120 | A    | 12   | 14 | 
120 | A    | 18   | 20 | 
120 | A    | 18   | 20 | 
120 | A    | 22   | 24 | 
120 | B    | 30   | 32 | 0
120 | B    | 19   | 20 | 2
120 | B    | 10   | 14 | 1

有人可以帮忙吗?我期待类似 COUNT OVER 或 RANK OVER 没有 GROUP BY 因为上面的表不是原始表,它来自另一个子查询..

【问题讨论】:

    标签: sql count


    【解决方案1】:

    嗯嗯。 . .我认为相关子查询可以满足您的要求:

    select t.*,
           (case when type = 'B'
                 then (select count(*)
                       from t t2
                       where t2.type = 'A' and
                             t2.from >= t.to and
                             t2.to <= t.from
                      )
            end) as count
    from t;
    

    我不确定between 的逻辑是否包括端点。传统上,在 SQL 中,它确实如此。但如果这不是您的意图,那么您可能需要&lt;&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2016-01-10
      • 2023-02-02
      • 1970-01-01
      • 2021-10-27
      • 2015-07-09
      相关资源
      最近更新 更多