У меня есть следующая инструкция SQL для выбора ежемесячных продаж каждого продукта, хранящегося в моей базе данных. Продукт выбирается на основе пользовательского ввода. Запрос работает для этой таблицы.
+------------+----------+-------+-------+-----------+
| orderDate | Espresso | Latte | Mocha | Cappucino |
+------------+----------+-------+-------+-----------+
| 2019-01-01 | 18 | 20 | 10 | 12 |
| 2019-01-02 | 13 | 11 | 20 | 10 |
| 2019-01-03 | 12 | 14 | 13 | 14 |
| 2019-01-04 | 20 | 13 | 15 | 14 |
| 2019-01-05 | 17 | 18 | 11 | 16 |
+------------+----------+-------+-------+-----------+
import sqlite3
title = input("Enter column to search")
sql = """SELECT SUM(sub.sales) as total_sales,
strftime("%m-%Y", sub.[orderDate]) as 'month-year'
FROM
(SELECT [orderDate], Espresso AS sales, 'Espresso' as item
FROM groupedSales
UNION ALL
SELECT [orderDate], Latte AS sales, 'Latte' as item
FROM groupedSales
UNION ALL
SELECT [orderDate], Mocha AS sales, 'Mocha' as item
FROM groupedSales
UNION ALL
SELECT [orderDate], Cappucino AS sales, 'Cappucino' as item
FROM groupedSales
UNION ALL
SELECT [orderDate], Americano AS sales, 'Americano' as item
FROM groupedSales
UNION ALL
) AS sub
WHERE sub.[item] = ? AND milkOptions = 'Soya'
GROUP BY strftime("%m-%Y", sub.[orderDate])
"""
conn=sqlite3.connect("system.db")
cur=conn.cursor()
aggregateIndividuals = cur.execute(sql, (title, milkOptions,)).fetchall()
valueArray = []
valueArray2 = []
for values in aggregateIndividuals:
print(values)
Вот типичный вывод:
Введите столбец для поискаЭспрессо
(494, '01-2019')
(440, '02-2019')
(447, '03-2019')
(447, '04-2019')
(452, '05-2019')
(439, '06-2019')
(433, '07-2019')
(482, '08-2019')
(443, '09-2019')
(440, '10-2019')
(441, '11-2019')
(458, '12-2019')
Однако приведенная выше таблица была тестовой и не соответствует формату моей фактической таблицы, в которую поступают заказы клиентов. Как мне адаптировать запрос для выбора ежемесячных продаж каждого продукта из новой таблицы, если нет заголовков продуктов, а вместо них ячейки с названием продукта под столбцом product. Вот моя фактическая таблица, для которой я хотел бы использовать этот запрос:
+---------+-----------+--------+-------------+------------+----------+-------+------------+
| orderid | product | size | milkOptions | orderDate | quantity | price | customerid |
+---------+-----------+--------+-------------+------------+----------+-------+------------+
| 1 | Espresso | Small | Soya | 2019-10-29 | 1 | 1.0 | 1 |
| 2 | Cappucino | Small | SemiSkimmed | 2019-10-29 | 1 | 1.0 | 1 |
| 3 | Cappucino | Small | SemiSkimmed | 2019-10-29 | 1 | 1.0 | 1 |
| 4 | Cappucino | Medium | SemiSkimmed | 2019-10-29 | 1 | 1.0 | 1 |
+---------+-----------+--------+-------------+------------+----------+-------+------------+
Я использую браузер БД для SQlite3. ПРИМЕЧАНИЕ. Я сократил записи в обеих базах данных, чтобы минимально воспроизвести это, но в моем браузере есть запись для каждого дня года в столбце orderDate, а во второй таблице есть больше примеров различных продуктов, заказанных, но я сократил его для этого примера.