我经常抓取产品价格并将其存储在pricehistory
表中。
示例表:
id productid oldprice newprice created_at
20 B0B136KCXP 1571.54 1687.31 2022-09-27 14:38:34
527 B0B136KCXP 1687.31 1598.39 2022-09-27 21:28:04
1317 B0B136KCXP 1598.39 1798.19 2022-09-28 13:51:02
1344 B0B136KCXP 1798.19 1897.10 2022-09-28 14:16:59
1859 B0B136KCXP 1897.10 1587.41 2022-09-28 22:23:39
5894 B0B136KCXP 1587.41 1883.12 2022-09-30 22:22:47
6433 B0B136KCXP 1883.12 1873.13 2022-10-01 09:56:28
9080 B0B136KCXP 1873.13 1883.12 2022-10-03 16:16:43
9256 B0B136KCXP 1883.12 1873.13 2022-10-03 19:54:40
10112 B0B136KCXP 1873.13 1860.13 2022-10-04 07:47:43
10290 B0B136KCXP 1860.13 1798.20 2022-10-04 11:09:52
在此表中,我希望选择productid
的最低价格。我将通过电报bot发送此数据作为通知。
我试了几次都没有成功,我想在零碎的pipelines.py
文件中执行此操作。
我想选择的内容:
第一个月第三个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月
提前感谢您的帮助。
我的通知功能:
def sendnotifications(self, token):
cursor = self.cnx.cursor()
req = requests
cursor.execute("SELECT * FROM notificate WHERE token= '"+token+"'")
notifications = cursor.fetchall()
for notification in notifications:
print(notification)
productid = notification[1]
url = notification[3]
name = notification[2]
old = notification[4]
new = notification[5]
price_difference = old - new
percentage = price_difference / old
percentage_str = str("%.2f" % (percentage * 100))
cursor.execute("SELECT p1.productid,p1.oldprice,p1.created_at FROM pricehistory p1 JOIN (SELECT min(oldprice) as minprice,productid FROM pricehistory GROUP BY productid) p2 ON p1.productid=p2.productid and p1.oldprice=p2.minprice")
pricehistory = cursor.fetchall()
for history in pricehistory:
productid = history[0]
oldprice = history[1]
created_at = history[2]
message = "<b>" + name + "</b>" + "\n\n" + \
str(old) + " TL >>>> " + \
str(new) + f" TL - <b>{percentage_str}%</b>" + "\n\n" + \
url + "\n\n" + \
"Min Price History:" + oldprice + created_at + "\n\n"
if str(old) == "1.00" or str(old) == "2.00":
message = "<b>" + name + "</b>" + "\n\n" + \
"<b>" + str(new) + " TL\n\n" + "</b>" + \
url + "\n\n" + \
"Min Price History:" + oldprice + created_at + "\n\n"
2条答案
按热度按时间9bfwbjaz1#
如果你只是想得到最低的价格,那么你可以使用下面的sql
如果要将
created_at
组合在一起,则可以使用下面的sqleanckbw92#
SELECT产品ID,旧价格,创建时间_at FROM价格历史记录WHERE旧价格DESC LIMIT 1