Я пытаюсь написать программу для запроса базы данных. База данных golfDB и состоит из одной таблицы называется players
с 5 полями:SQLIte3 запрос к базе данных
name
(имя игрока)totalGross
(сумма валовых баллов от каждого раунда)totalRounds
(количество сыгранных раундов)pars
(общее число сделанного Рагза)birdies
(общее количество), сделанных птички
Моя программа должна выводить проигрыватель с наибольшим количеством парсов, средним счетом (totalGross/totalRounds) для введенного игрока и отображать игроков в порядке суммарного валового счета, от самого низкого до самого высокого.
Я действительно не уверен, как вывести плеер с наибольшим количеством парсов. Прямо сейчас у меня код выводит список списков, каждый с игроком и их парсы. Я не уверен, как упорядочить их по своим параметрам, а затем выбрать самые высокие, потому что все, что я пробовал, - это просто выбрать номера, а затем я не могу вернуться к тому, к какому игроку они принадлежат.
Кто-нибудь знает, как заказать список списков, просто количество пар, а затем он может просто распечатать плеер?
import sqlite3
def getDBCursor(DB):
"""obtain and return a cursor for the database DB"""
conn= sqlite3.connect('/Users/tinydancer9454/Documents/python/golfDB')
cursor= conn.cursor()
return cursor
def queryDBpars(cursor):
"""find out which player had the most pars"""
cursor.execute('select name, pars from players where pars >= 0')
playerPars= cursor.fetchall()
def queryDBavgScore(cursor):
"""find the average score of inputed player"""
player= input("Please enter the player's name: ")
cursor.execute('select totalGross from players where name = ?', (player,))
totalGrossScore = cursor.fetchone()
cursor.execute('select totalRounds from players where name = ?', (player,))
totalRoundsScore = cursor.fetchone()
answer = totalGrossScore[0]/ totalRoundsScore[0]
print('The average score for', player, 'is', answer,)
def queryDBplayers(cursor):
"""lists the players in order of their total gross score"""
def main():
"""obtain cursor and query the database: golfDB"""
cursor= getDBCursor('golfDB')
queryDBpars(cursor)
queryDBavgScore(cursor)
queryDBplayers(cursor)
cursor.close()
И это выход:
[('Ruth', 16), ('Elena', 12), ('Jane', 12), ('Ezgi', 13), ('Ricki', 9), ('Margaret', 10), ('Rosalia', 16), ('Betty', 14)]
попробуйте этот запрос: выберите * у игроков, где pars> = 0 order by pars desc limit 1 –
@varahram, если вы ограничите его 1, это не принимает во внимание тот факт, что более одного игрока может иметь одинаковое количество пар – tinydancer9454