Oracle Select实现汽车品牌去重编号列展示的技术需求
Oracle为汽车品牌分配唯一编号的实现方案
要实现为不同汽车品牌分配连续唯一编号、并保留对应车型信息的查询需求,Oracle可以通过**窗口函数DENSE_RANK()**快速完成,以下是具体实现:
示例SQL语句
假设你的汽车数据存储在名为cars的表中,包含Brand(品牌)和Car(车型)两列,执行以下语句即可得到目标结果:
SELECT Brand, Car, DENSE_RANK() OVER (ORDER BY Brand) AS DistinctBrand FROM cars ORDER BY DistinctBrand, Car;
关键逻辑说明
DENSE_RANK() OVER (ORDER BY Brand):该窗口函数会按照Brand列的字母顺序,为每个不同的品牌分配连续的唯一编号——相同品牌的所有车型会共享同一个编号,且编号不会出现跳号(比如示例中的1、2、3、4连续排列)。- 如果需要自定义编号的排序规则(而非按品牌字母顺序),只需修改
ORDER BY Brand部分即可,例如指定特定品牌的排序优先级。
结果示例
执行后会得到与需求完全匹配的结果集:
| Brand | Car | DistinctBrand |
|---|---|---|
| Honda | Civic | 1 |
| Honda | CRV | 1 |
| Ford | Edge | 2 |
| GM | Blazer | 3 |
| GM | Bolt | 3 |
| Fiat | 50 | 4 |
| Fiat | 500 | 4 |
| Fiat | Trekking | 4 |
内容的提问来源于stack exchange,提问作者JPT
相关产品推荐
相关产品推荐

