( SELECT * FROM ( SELECT CUSTNO, CALLTIME, CALLRESULT, CALLREMARK, RANK() OVER(PARTITION BY CUSTNO ORDER BY CALLTIME DESC) RN FROM AC_FIA.TC_CALL_AI) WHERE RN = 1) TCALL 这个WHERE RN = 1 是什么意思
时间: 2024-01-24 22:03:08 浏览: 119
这个SQL语句是用来查询AC_FIA.TC_CALL_AI表中每个客户的最近一次通话记录。其中RANK() OVER(PARTITION BY CUSTNO ORDER BY CALLTIME DESC) RN是将每个客户的通话记录按照通话时间倒序排列,并给每个记录一个排名。这个WHERE RN = 1是用来筛选出排名为1的记录,即每个客户的最近一次通话记录。
相关问题
(SELECT AL.RULE_ID,WM_CONCAT(AL.CUSTNO) FROM AC_FIA.TC_CALL_AI AL WHERE AL.RULE_ID != NULL group by AL.RULE_ID) 为什么!=null就没有数据
在 SQL 中,使用 "!=" 或 "<>" 操作符来判断某个值是否不等于另一个值。然而,当使用 "!=" 或 "<>" 操作符时,如果比较的值中包含 NULL,结果可能会出现意外的行为,因为 NULL 表示未知的值,它既不等于任何非 NULL 值,也不等于 NULL 本身。因此,当比较一个值和 NULL 时,结果永远是 UNKNOWN,而不是 TRUE 或 FALSE。为了正确地检查一个值是否为 NULL,应该使用 "IS NULL" 或 "IS NOT NULL" 操作符。
在你提供的 SQL 语句中,"!=" 操作符被用来比较 "AL.RULE_ID" 和 NULL,这是不正确的做法。正确的做法是使用 "IS NOT NULL" 操作符来判断 "AL.RULE_ID" 是否为 NULL,例如:
```
SELECT AL.RULE_ID, WM_CONCAT(AL.CUSTNO)
FROM AC_FIA.TC_CALL_AI AL
WHERE AL.RULE_ID IS NOT NULL
GROUP BY AL.RULE_ID;
```
这样做就能够正确地筛选出 "AL.RULE_ID" 不为 NULL 的记录,并返回符合条件的结果集。
pf_wide_table['last_%dM_avg_bal_loan_zyed' % n] = pf_wide_table.sort_values(by='partition_flag').groupby('custno_md5')['avg_bal_loan_zyed'].shift(n)
这段代码是用于创建一个新的列 `last_%dM_avg_bal_loan_zyed`,其中 `%d` 会被替换为变量 `n` 的值。该列的值是根据 `custno_md5` 进行分组,并对 `avg_bal_loan_zyed` 列进行向前移动 `n` 行得到的结果。具体实现是先按照 `partition_flag` 进行排序,然后对每个 `custno_md5` 分组进行向前移动操作。
阅读全文