informix怎么实现排列序号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了informix怎么实现排列序号相关的知识,希望对你有一定的参考价值。
例如一组数据,按升序排列好以后,如何在表中增加一列,改列为排序后的序号,类似下面这样
数 序号
10 1
20 2
30 3
40 4
在SQL中,如果没有排序,记录顺序是不一定的,
所以,也就不能确定行号(这叫已知条件不足吧)。
但是您如果告诉了要按什么顺序排列,就可以很简单地求出行号。
方法1:
比如按您给出的两列COL1,COL2排序,就可以这样求行号:
SELECT 行号=(select count(1) from tablename a where a.col1*10000+a.col2<=tablename.col1*10000+tablename.col2),* from tablename order by col1,col2
方法2:
select rowid,* from tablename ; 参考技术A select时加上order by 序号 asc;不就行了
排列序号
代码;
class Solution {
public:
/**
* @param A an integer array
* @return a long integer
*/
long long permutationIndex(vector<int>& A) {
// Write your code here
// 找出A中每一个位置其后有多少个数比它小
// 然后再相加这些数与位对应的权
int len = A.size();
int c[len];
c[len - 1] = 0;// 最后一个数之后就没有比它小的数了
vector<int> a;
a.push_back(A[len - 1]);
for(int i = len - 2;i >= 0; --i){
auto iter = lower_bound(a.begin(), a.end(), A[i]);
c[i] = iter - a.begin();
a.insert(iter, A[i]);
}
long long ans = 1, fac = 1, cc = 1;
for(int i = len - 2;i >= 0; --i)
ans += (fac*=cc++) * c[i];
return ans;
}
};
截图:
以上是关于informix怎么实现排列序号的主要内容,如果未能解决你的问题,请参考以下文章