我需要一份关于指定月份所有订单的名、姓和总额的报告。该报告应进行分类,以便花费最多的客户位于顶部。
我可以在desc中查询列表,但是用户如何输入一个变量,然后为ech month创建一个案例呢?我的代码使用硬编码的月份。
表顺序:
cursor.execute("DROP TABLE IF EXISTS `Orders`;")
cursor.execute('''
CREATE TABLE `Orders` (
`OrderID` INTEGER PRIMARY KEY AUTOINCREMENT,
`OrderDate` VARCHAR(11) NULL,
`CustId` INT NULL,
`TotalAmount` DOUBLE NULL,
FOREIGN KEY (`CustId`) REFERENCES Customers(`CustID`) ON UPDATE CASCADE
);
''')
餐桌顾客:
cursor.execute("DROP TABLE IF EXISTS `Customers`;")
cursor.execute('''
CREATE TABLE `Customers` (
`CustID` INTEGER PRIMARY KEY AUTOINCREMENT,
`FirstName` VARCHAR(11) NOT NULL,
`LastName` VARCHAR(11) NOT NULL,
`City` TEXT NULL,
`Country` TEXT NULL,
`Phone` VARCHAR(15) NULL
);
''')
这是我写的
cursor = conn.cursor()
for row in cursor.execute('''SELECT Firstname, Lastname, orders.TotalAmount
FROM customers
INNER JOIN orders on orders.CustID = customers.CustID
WHERE orderDate like '%02-2020'
GROUP BY customers.custid, customers.firstname, customers.lastname
ORDER BY TotalAmount desc;'''):
print(row)
cursor.close()
我是否必须询问用户他们希望在哪个月看到客户花费更多的钱,将其存储在一个变量中,然后执行查询?或者?
从概念上讲,我在想:
询问需要哪一个月的报告
将该变量存储在一个变量中,并生成一个if大小写,如: (if variable = 0 OR variable > 12) then (Error that is not a month) elseif variable = 1 then "WHERE orderDate like '%01-2020'" elseif variable = 2 then "WHERE orderDate like '%02-2020'" elseif variable = 3 then "WHERE orderDate like '%03-2020'"
不确定是不是最好的办法。
1条答案
按热度按时间7tofc5zh1#
在sqlite中,可以只使用字符串函数。假设您想要2020年5月的报告,您可以添加以下内容
where
您的问题:注意:我怀疑您的查询应该使用聚合,因此每个客户的所有订单都分组在一个记录中: