sql - 如何为具有关键数据的另一列找到不同的值?
问题描述
我目前有一列具有唯一的帐号我想为另一列中的每个帐户唯一帐号创建唯一值,以便我可以使用这些来获取不同值的计数。
例如 :
Account number unique value
12345. 67
56738. 87
28373. 58
28373. 58
因此,当我对 unique value 列进行区分时,我会得到与 account number 的不同计数相同的不同计数。
所以这里的不同计数将是 3
解决方案
dense_rank()
应该做你想做的事:
select t.*, dense_rank() over (order by account_number) as unique_id
from t;
请注意,随着新帐户的添加或删除,这可能会随着时间而改变。如果这是一个问题,我的建议是创建一个account_numbers
具有整数主键的单独表。使用主键作为唯一编号。
推荐阅读
- arrays - 如何创建一个可排序的长嵌套列表?
- php - 如何在 PhpSpreadsheet 中修复 TcPDF 编写器中的边框?
- sql - Cloud SQL 计费
- json - 如何在没有密钥的情况下访问 JSON 文件的内容?
- kubernetes - 通过 Nodeport 导航到特定路径
- html - 屏幕变为可滚动时的奇怪 CSS 行为
- android - SharedPreferences 跨多个活动返回 NULL
- c# - 使用 DocuSign 生成 PDF 并替换里面的表单元素值
- javascript - 在这种情况下我使用哪个 rxjs 运算符?
- java - 如何在对 MySQL 数据库的 JDBC 调用中指定毫秒超时?