gpt4 book ai didi

sql - 将表中的每个字段与同一表中的每个其他字段进行比较

转载 作者:行者123 更新时间:2023-12-01 06:53:27 24 4
gpt4 key购买 nike

想象一个只有一列的表。

+------+
| v |
+------+
|0.1234|
|0.8923|
|0.5221|
+------+

我想对第 K 行执行以下操作:
  • 取行 K=1 值:0.1234
  • 计算表的其余部分中有多少个值小于或等于第 1 行中的值。

  • 遍历所有行
    输出应该是:
    +------+-------+
    | v |output |
    +------+-------+
    |0.1234| 0 |
    |0.8923| 2 |
    |0.5221| 1 |
    +------+-------+

    快速更新我使用这种方法来计算上表中每个 v 值的统计量。交叉连接方法对于我处理的数据大小来说太慢了。因此,相反,我计算了 v 值网格的统计数据,然后将它们与原始数据中的 vs 进行了匹配。 v_table 是之前的数据表,stat_comp 是统计表。
    AS SELECT t1.* 
    ,CASE WHEN v<=1.000000 THEN pr_1
    WHEN v<=2.000000 AND v>1.000000 THEN pr_2
    FROM v_table AS t1
    LEFT OUTER JOIN stat_comp AS t2

    最佳答案

    Windows 函数在 1999 年被添加到 ANSI/ISO SQL,并在 2013 年 5 月 15 日发布的 0.11 版中添加到 Hive。
    您正在寻找的是 的变体排名与关系高 在 ANSI/ISO SQL:2011 中看起来像这样 -

    rank () over (order by v with ties high) - 1

    Hive 目前不支持 with ties ...但逻辑可以使用 count(*) over (...) 来实现
    select  v
    ,count(*) over (order by v) - 1 as rank_with_ties_high_implicit

    from mytable
    ;

    或者
    select  v
    ,count(*) over
    (
    order by v
    range between unbounded preceding and current row
    ) - 1 as rank_with_ties_high_explicit

    from mytable
    ;

    关于sql - 将表中的每个字段与同一表中的每个其他字段进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831773/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com