我试图根据DB2中的“key”找到字段“bal”的中值。执行此代码时出现此错误“错误:DB2 SQL错误:SQLCODE = -206,SQLSTATE = 42703,SQLERRMC = KEY,DRIVER = 3.66.46,SQLState:42703)。
感谢您的评论!!
SELECT
key,
AVG(bal)
FROM
(
SELECT
key,
bal,
ROW_NUMBER() OVER (
PARTITION BY key
ORDER BY bal ASC) AS RowAsc,
ROW_NUMBER() OVER (
PARTITION BY key
ORDER BY bal DESC) AS RowDesc
FROM tab1
) x
WHERE
RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
GROUP BY key
ORDER BY key;
答案 0 :(得分:1)
确保对key
的每次引用都变为"key"
SELECT
"key"
, AVG(bal)
FROM (
SELECT
"key"
, bal
, ROW_NUMBER() OVER (PARTITION BY "key"
ORDER BY bal ASC) AS rowasc
, ROW_NUMBER() OVER (PARTITION BY "key"
ORDER BY bal DESC) AS rowdesc
FROM tab1
) x
WHERE RowAsc IN (RowDesc, RowDesc - 1, RowDesc + 1)
GROUP BY
"key"
ORDER BY
"key"
;