Python SQL,每1000行添加相同的序列号
我有一个表,我按每个用户的条目数量排序。然后我复制这个表中的值,我想给每1000行一个序列号。因此,如果一个用户有2000个条目,并且数量最高,那么他的条目将得到值1和2(他的条目中的哪个条目得到1和哪个条目得到2并不重要)。如果接下来的两个用户有501和499个条目,那么他们的所有条目都会得到值3,依此类推。问题是,我不确定从哪里开始,我已经看到了“选择top x”解决方案,但它在这里没有帮助。这就是我现在所拥有的,所以我需要插入一个“每1000个连续行”的条件,但我不知道应该搜索哪个方向Python SQL,每1000行添加相同的序列号,python,sql,postgresql,Python,Sql,Postgresql,我有一个表,我按每个用户的条目数量排序。然后我复制这个表中的值,我想给每1000行一个序列号。因此,如果一个用户有2000个条目,并且数量最高,那么他的条目将得到值1和2(他的条目中的哪个条目得到1和哪个条目得到2并不重要)。如果接下来的两个用户有501和499个条目,那么他们的所有条目都会得到值3,依此类推。问题是,我不确定从哪里开始,我已经看到了“选择top x”解决方案,但它在这里没有帮助。这就是我现在所拥有的,所以我需要插入一个“每1000个连续行”的条件,但我不知道应该搜索哪个方向 c
cur.execute("SELECT * FROM table1 ORDER BY users_count DESC;")
dbrows = cur.fetchall()
conn.commit()
my_number = 1
for "every 1000 sequential rows" in dbrows:
cur.execute("INSERT INTO table2 (users_count, number) VALUES (%s,%s)", (row[0],my_number))
my_number += 1
为什么是Python?您可以在SQL插入/选择中这样做:
insert into table2 (users_count, number)
select users_count,
((row_number()
over (order by ORDER BY users_count DESC) - 1) / 1000) + 1
from table1
这将创建一个序列号,然后使用一些整数除法将相同的数字分配给1000行的组。为什么选择Python?您可以在SQL插入/选择中这样做:
insert into table2 (users_count, number)
select users_count,
((row_number()
over (order by ORDER BY users_count DESC) - 1) / 1000) + 1
from table1
这将创建一个序列号,然后使用一些整数除法将相同的数字分配给1000行的组