我在DB中有表产品。 产品:id,user_id,product_price。 在过去30天内如何获得超过1000美元的用户? (每位用户最近30天) 我的脚本对我没有帮助:
SELECT t.user_id,
,SUM(t.product_price)
FROM ( SELECT p.user_id
, p.product_price
FROM products p
ORDER BY p.id DESC LIMIT 30
) t
GROUP BY t.user_id
HAVING SUM(t.product_price) >= 1000
答案 0 :(得分:0)
您不需要子查询,您需要WHERE
。 “过去30天”表示直到今天的时间段。为此,请使用curdate()
(或类似的构造):
SELECT p.user_id, SUM(p.product_price)
FROM products p
WHERE p.<date column> >= curdate() - interval 30 day
GROUP BY p.user_id
HAVING SUM(p.product_price) >= 1000;
大概,您的数据中没有将来的日期,因此您无需检查日期是否过去。
数据库中表的名称非常可疑。我不知道为什么user_id
会出现在名为products
的表中。