使用python中的SQL语句在SQL LITE中添加一列到一定数量的列

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (77)

我遇到了这行代码的问题。基本上,我想要做的是在数据库中添加一个列(SQL LITE),并使用Python中的SQL来添加该列,直到达到某个值,并说明它到达该值的人的名字。

我已经使用了大量不同的命令命令,并且切换了下面语句中列出的列的顺序,这没有帮助,所以这是我最有进步的那个。

import sqlite3
conn = sqlite3.connect("Boys.db")
c = conn.cursor()
# Creating the table
class Table:
 c.execute('''CREATE TABLE IF NOT EXISTS Users (Rank INTEGER, Name INTEGER, TotalB INTEGER, Percentage INTEGER)
''')

c.execute('SELECT Name FROM Users GROUP BY Name HAVING SUM(Percentage) 
 > .5000')
rows = c.fetchall()
print('The boys who had a frequency of over 50% was...')
print(rows)

conn.commit()
# Loading in the csv data
csvfile = open('BoysCSVfromText.csv', 'r')
creader = csv.reader(csvfile)
for t in creader:
   c.execute('INSERT INTO Users VALUES(?,?,?,?)', t)
conn.close()  

该声明打印出所有男孩的名字,这些男孩的百分比超过50%,并按照AZ的顺序排列。

我使用以下整列(百分比)的总和:

c.execute('SELECT SUM(Percentage) FROM Users')
rows = c.fetchall()
print('The boys who had a frequency of over 50% was...')
print(rows)

这不是我想要的,所以现在我被卡住了。我的数据库是1000行,所以我不能将它全部放在一张图片中,但这是我到目前为止所拥有的:

我的数据库 示例代码行的示例

希望我已经提供了所需的所有图像。

我想要发生的是,SQL语句从我的数据库中删除“Percentage”列,并添加所有数字,直到达到值.5000并打印出它在达到.5000计数时添加的姓氏。相反的是,它打印出AZ顺序中高于.5000的所有男孩名字。我认为这是因为group by语句按照百分比超过.5000的名称对其进行分组。

提问于
用户回答回答于

我想你可以使用SQLiteSUM支持的窗口:

WITH cte AS (
  SELECT *, SUM(Percentage) OVER(ORDER BY Rank) AS p
  FROM Users
)
SELECT *
FROM cte
WHERE p > 0.5
ORDER BY p
LIMIT 1;

扫码关注云+社区

领取腾讯云代金券