2016-04-05 3 views
-1

3つの列の平均を探して降順で並べ替えることを試みています。私はSQLの方が新しいですが、これを徹底的に調べましたが、3つの列の平均を見つける方法はまだ分かりません。以下はコードです。Sqlite3 Pythonで複数の列の平均を検索し、降順に並べ替える

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 

これについてのお手伝いをさせていただきます。 更新:プログラムは平均値を返すことができるようになりましたが、平均値のみを返します。私は他の2つの列(姓、名)も返す必要があります。以下はテーブルコードです。

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() 
+0

にこれはfloatとして平均のみを返すために動作しますが、私はまた、他の二つのcolums(姓、FIRSTNAME)をしたいですかhttps://www.sqlite.org/lang_select.html –

答えて

2

平均を返すには、SELECT句に値を設定する必要があります。次に、ORDER BYを使ってそれらを注文してください。

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

で構文図を参照してくださいまた返される、私はまた、テーブルコードを追加して質問に表示されます。 –

+0

私は答えを更新しました。 – Barmar

+0

Noted、ありがとう –

関連する問題