select nvc_name,i_cp_identifier,rank()over(partition by nvc_name order by i_cp_identifier)as 名字排序 from t_contact_person group by nvc_name,i_cp_identifier;在这个SQL语句中,怎么编写SQL:进一步找到名字排序=1的内容?
时间: 2023-08-24 11:05:10 浏览: 86
NVC用户參考手冊.pdf
3星 · 编辑精心推荐
可以在原有 SQL 语句的基础上添加一个外层 SELECT,使用 WHERE 子句筛选出排名为 1 的记录,如下所示:
```
SELECT nvc_name, i_cp_identifier, 名字排序
FROM (
SELECT nvc_name, i_cp_identifier, RANK() OVER (PARTITION BY nvc_name ORDER BY i_cp_identifier) AS 名字排序
FROM t_contact_person
GROUP BY nvc_name, i_cp_identifier
) AS t
WHERE 名字排序 = 1;
```
在这个 SQL 语句中,外层 SELECT 语句选择了第一层查询结果中的 nvc_name、i_cp_identifier 和 名字排序 三个字段,其中 名字排序 是第一层查询结果中计算出的字段。第一层查询语句与你给出的 SQL 语句相同,使用 RANK() OVER (PARTITION BY nvc_name ORDER BY i_cp_identifier) AS 名字排序 计算出每个 nvc_name 分组中 i_cp_identifier 的排名。最后,WHERE 子句选择了排名为 1 的记录。
阅读全文