sql - 将我的计算转换为用户定义的函数
问题描述
我正在尝试将我的计算转换为 UDF,但我不断收到错误,不知道如何更正它。
这是代码:
CREATE FUNCTION f_q1 (integer) RETURNS integer stable as $$
SELECT COUNT(DISTINCT(CASE WHEN q_1 IN ('8', '9', '10') THEN RESPONSE_ID END))*1.0 / COUNT(DISTINCT(CASE WHEN q_1 IS NOT NULL THEN RESPONSE_ID END))*1.0
$$ language sql;
我实际上是在尝试使用以下代码:
SELECT
COUNT(DISTINCT(CASE WHEN f.q_1 IN ('8', '9', '10') THEN f.RESPONSE_ID END))*1.0 / COUNT(DISTINCT(CASE WHEN f.q_1 IS NOT NULL THEN f.RESPONSE_ID END))*1.0 AS q_1
FROM FACT f
并将其创建为我可以在整个查询过程中调用的 UDF。
这是我第一次做 UDF - 有人可以帮我纠正这个问题吗?
解决方案
CREATE FUNCTION f_q1 (integer)
表示您正在传递一个整数。因此,您的 UDF 只能使用该整数来确定其输出。
函数中没有调用任何内容q_1
,也没有多行输入。它是一个标量 UDF,这意味着它接受一定数量的输入值并返回单个输出值。
您可能会考虑使用存储过程而不是标量 UDF。
但是,坦率地说,如果您的上述查询有效,请继续使用它。把它放在一个函数中并没有什么特别的好处。
推荐阅读
- d3.js - 每个区域都有不同的梯度
- axios - 使用 Axios 和 DeepL API 实现 HTTP 请求
- azure - Azure WebApp 部署引发错误“从进程返回的退出代码 3:文件名 '...\node\bin\node.exe',参数 ..\azurermwebappdeployment.js”
- spring - 从最后一条成功消息中重播 Kafka 主题
- javascript - 如何在 ReactJS 中将单选按钮从 true 切换回 false
- c# - 在 C# (Visual Studio 2019) 的 docx 中播放嵌入的音乐文件
- python - 图像分割的后处理
- python - 传递给函数的numpy数组没有改变
- html - 如何使用本地图像的 url 在 css 中设置背景图像
- html - 徽标旁边的菜单栏 (CSS)