在Sqlite3 python中求多列的平均值并按降序排序

2024-04-25 11:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到三列的平均值,并按降序排列。我对SQL比较新,但是我已经仔细研究过了,但是我仍然不确定如何找到三列的平均值。下面是代码。你知道吗

import sqlite3
connection = sqlite3.connect("class1.db")
cursor = connection.cursor()
cursor.execute("SELECT*FROM class1 avg (score1+score2+score3) DESC")
print("Class 1:")
result = cursor.fetchall() 
for r in result:
    print(r)

这是返回的错误。你知道吗

Traceback (most recent call last):
  File "F:\Adair,Rowan CA2\Task 3\Code\DisplayTablesAverage.py", line 4, in <module>
    cursor.execute("SELECT*FROM class1 avg (score1+score2+score3) DESC")
sqlite3.OperationalError: near "(": syntax error

任何帮助都将不胜感激。 更新:程序现在可以返回平均值,但它只返回平均值。我还需要返回另外两列(姓、名)。这是表格代码。你知道吗

import sqlite3
connection=sqlite3.connect('class1.db')
cursor=connection.cursor()
sql_command1 = """
CREATE TABLE class1 (
surname VARCHAR (20),
forename VARCHAR (20),
score1 INTEGER,
score2 INTEGER,
score3 INTEGER);"""
cursor.execute(sql_command1)
connection.commit()
connection.close()

Tags: 代码importexecutedbconnectintegerconnectionselect
1条回答
网友
1楼 · 发布于 2024-04-25 11:36:19

如果要返回平均值,必须将其放入SELECT子句中。然后用ORDER BY也按这个顺序排列。你知道吗

SELECT surname, forename, AVG(score1+score2+score3) AS avg
FROM class1
GROUP BY surname, forename
ORDER BY avg DESC

相关问题 更多 >