查找Sqlite3 Python中多列的平均值并按降序排序

时间:2016-04-05 20:32:12

标签: python sql sqlite

我试图找到三列的平均值并按降序排序。我是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()

1 个答案:

答案 0 :(得分:2)

如果要返回平均值,则必须将其放在SELECT子句中。然后使用ORDER BY按顺序排序。

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