2017-01-31 1 views
1

У меня есть база данных, в которой есть таблица заказов. Одним из столбцов в таблице заказов является «доход», а другой - «date_of_booking», который хранит даты в формате «DD/MM/YYYY». Я пытаюсь написать функцию, которая позволяет пользователю вводить месяц, и из этого будет вычислять все доходы с этого месяца. До сих пор у меня есть это:как найти сумму нескольких чисел из столбца в базе данных sql в python?

validMonth = False 
    while not validMonth: 
    lookForMonth = input('What month, please? (number from 1 through 12):') 
    try: 
     validMonth = 1<=int(lookForMonth)<=12 
    except: 
     pass 

    sqlCmd = 'SELECT date FROM bookings WHERE SUBSTR(date,4,2)="%.2i"' % int(lookForMonth) 
    for row in conn.execute(sqlCmd): 
    print (row) 

С помощью этого кода, я могу вывести дату заказа на определенный месяц. Однако я хочу вывести общий доход за определенный месяц. Что мне нужно добавить, чтобы это отображало общие доходы за определенный месяц и выводило его? Любая помощь будет с радостью оценена, спасибо.

ответ

0

Заменить одно заявление.

SELECT sum(income) FROM bookings where SUBSTR(date,4,2)='04' 

Как и в:

import sqlite3 
conn = sqlite3.connect(':memory:') 
c = conn.cursor() 
c.execute('CREATE TABLE bookings (date text, income real)') 
c.execute('''INSERT INTO bookings VALUES ('01/04/2017', 19.22)''') 
c.execute('''INSERT INTO bookings VALUES ('15/04/2017', 19.22)''') 
c.execute('''INSERT INTO bookings VALUES ('22/04/2017', 19.22)''') 

validMonth = False 
while not validMonth: 
    lookForMonth = input('What month, please? (number from 1 through 12):') 
    try: 
     validMonth = 1<=int(lookForMonth)<=12 
    except: 
     pass 


sql = '''SELECT sum(income) FROM bookings where SUBSTR(date,4,2)="%.2i"''' % int(lookForMonth) 
for row in c.execute(sql): 
    print (row) 

Результирующий выход:

What month, please? (number from 1 through 12):4 
(57.66,) 
+0

это удивительно !! Спасибо большое!!!! : D – brenda

+0

один вопрос, хотя, как я могу изменить сумму sql = '' 'SELECT (доход) от заказов, где SUBSTR (date, 4,2) = "04"' '' ', чтобы она позволяла пользователю вводить месяц, как предполагалось, чтобы искать месяц «04»? – brenda

+0

ответ изменен для размещения собственного кода –

0

Прежде всего, вы хотите выбрать оба оператора sql.

sqlCmd = 'SELECT date_of_booking,incomes FROM bookings WHERE SUBSTR(date,4,2)="%.2i"' % int(lookForMonth) 
income_sum = 0 
for (row_date, row_income) in conn.execute(sqlCmd): 
    income_sum += row_income 
    print row_date 

print income_sum 

Тогда вы можете указать дату и доход строки в вашей петле, как указано выше.