如何将 NTILE 函数应用于 SQL 列

剑2

所以我试图在一些客户收到的关注数量上建立分位数,在应用 NTILES 函数之前,将NULL 和 0 留在样本中并将它们放在 0 和空分位数中,我正在使用这个函数:

CREATE FUNCTION dbo.RPS_Ntiles (@data int,@percentil int)  
RETURNS TABLE
AS
RETURN 
SELECT 
  NTILE(@percentil) OVER(ORDER BY @data DESC) as QUINTIL
  WHERE @data > 0
UNION
SELECT
CASE 
    WHEN CONVERT(int,@data) = 0 THEN 0
    WHEN @data is NULL THEN NULL
    END AS QUINTIL
WHERE @data = 0 or @data = NULL 

然后我使用 CROSS APPLY 应用它

SELECT t.QUINTIL,D.[atenciones]
FROM table as D
CROSS APPLY [dbo].[RPS_NTiles](CONVERT(int,D.[atenciones]),5) as t
ORDER BY D.[atenciones] DESC

此查询的结果有效地将 0 和空值保留在 NTILEs 函数之外,但其余数据完全放置在 1 quintil 中,如下所示:

+------------+---------+--+
| Atenciones | Quintil |  |
+------------+---------+--+
|         0  |       0 |  |
|         0  |       0 |  |
|       NULL |    NULL |  |
|         1  |       1 |  |
|         3  |       1 |  |
|         4  |       1 |  |
|         7  |       1 |  |
|        46  |       1 |  |
|        59  |       1 |  |
+------------+---------+--+

我正在寻找这样的东西:

+------------+---------+--+
| Atenciones | Quintil |  |
+------------+---------+--+
|         0  |       0 |  |
|         0  |       0 |  |
|       NULL |    NULL |  |
|         1  |       1 |  |
|         3  |       2 |  |
|         4  |       2 |  |
|         7  |       3 |  |
|        46  |       4 |  |
|        59  |       5 |  |
+------------+---------+--+
戈登·利诺夫

为什么要定义自己的函数?您可以使用case逻辑来表达这一点

select (case when Atenciones is null or Atenciones = 0
             then Atenciones
             else ntile(5) over (partition by (case when Atenciones is null or Atenciones = 0 then 1 else 2 end)
                                 order by Atenciones
                                ) 
        end)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫:如何将函数应用于不同的列

来自分类Dev

如何将用户定义的函数应用于BigQuery SQL中的多个列?

来自分类Dev

DBIx :: Class / SQL :: Abstract将SQL函数应用于WHERE子句中的列

来自分类Dev

如何将我的函数应用于 DataFrame 列?

来自分类Dev

如何将函数应用于两列以创建第三列

来自分类Dev

如何将函数应用于多个列以在R中创建多个新列?

来自分类Dev

在熊猫中,如何将函数应用于返回两列的每一列

来自分类Dev

如何将函数应用于多列以在 Pandas 中创建多列?

来自分类Dev

NTILE SQL函数的动态参数

来自分类Dev

NTILE SQL函数的动态参数

来自分类Dev

如何使用列值范围应用NTILE(4)?

来自分类Dev

如何将函数应用于所有字段(所有行的所有列)

来自分类Dev

如何将Lambda函数正确应用于熊猫数据框列

来自分类Dev

如何将函数应用于pandas数据框中的列中的每个值?

来自分类Dev

如何将聚合函数应用于Pandas中数据透视表的所有列

来自分类Dev

如何将特定列应用于R中的sapply函数?

来自分类Dev

如何将lambda函数正确应用于数据框的列?

来自分类Dev

如何将函数逐列应用于julia数据框

来自分类Dev

如何将函数应用于列的每个单元格?

来自分类Dev

如何将函数应用于依赖多个列的groupby子组?

来自分类Dev

如何将重复函数应用于数据框的列

来自分类Dev

如何将函数应用于带有 purrr 的列对?

来自分类Dev

如何将Window函数应用于DataFrame中的多列

来自分类Dev

如何将cumcount应用于两列?

来自分类Dev

如何将CountVectorizer应用于数据集的列?

来自分类Dev

如何将命令应用于第n列?

来自分类Dev

SQL 将函数应用于多个 id 行

来自分类Dev

在过滤之前将函数应用于列

来自分类Dev

按列将函数应用于Pandas数据框

Related 相关文章

  1. 1

    熊猫:如何将函数应用于不同的列

  2. 2

    如何将用户定义的函数应用于BigQuery SQL中的多个列?

  3. 3

    DBIx :: Class / SQL :: Abstract将SQL函数应用于WHERE子句中的列

  4. 4

    如何将我的函数应用于 DataFrame 列?

  5. 5

    如何将函数应用于两列以创建第三列

  6. 6

    如何将函数应用于多个列以在R中创建多个新列?

  7. 7

    在熊猫中,如何将函数应用于返回两列的每一列

  8. 8

    如何将函数应用于多列以在 Pandas 中创建多列?

  9. 9

    NTILE SQL函数的动态参数

  10. 10

    NTILE SQL函数的动态参数

  11. 11

    如何使用列值范围应用NTILE(4)?

  12. 12

    如何将函数应用于所有字段(所有行的所有列)

  13. 13

    如何将Lambda函数正确应用于熊猫数据框列

  14. 14

    如何将函数应用于pandas数据框中的列中的每个值?

  15. 15

    如何将聚合函数应用于Pandas中数据透视表的所有列

  16. 16

    如何将特定列应用于R中的sapply函数?

  17. 17

    如何将lambda函数正确应用于数据框的列?

  18. 18

    如何将函数逐列应用于julia数据框

  19. 19

    如何将函数应用于列的每个单元格?

  20. 20

    如何将函数应用于依赖多个列的groupby子组?

  21. 21

    如何将重复函数应用于数据框的列

  22. 22

    如何将函数应用于带有 purrr 的列对?

  23. 23

    如何将Window函数应用于DataFrame中的多列

  24. 24

    如何将cumcount应用于两列?

  25. 25

    如何将CountVectorizer应用于数据集的列?

  26. 26

    如何将命令应用于第n列?

  27. 27

    SQL 将函数应用于多个 id 行

  28. 28

    在过滤之前将函数应用于列

  29. 29

    按列将函数应用于Pandas数据框

热门标签

归档