我有一张桌子。每当客户更新他们的产品时,它都会存储价格。通过这种方式,我可以监控所做的价格变化,如果你愿意,可以监控历史。
表结构是
ID (Primary Key)
Date (DateTime)
Price (Decimal)
Product_ID (INT) - Foreign Key
我想查找每个产品的两个日期之间价格变化的总次数,然后将总数加起来。
例如我可以在主页上说“我们已经改变了X产品的价格2013年12月10日 - 2013年12月20日”
答案 0 :(得分:0)
通过查询可以很容易地处理一个简单的组。
select count(*), product_id from table where date>='' and date<'' group by product_id
这将为您提供产品ID和该时间段内的更改次数。
答案 1 :(得分:0)
SELECT SUM(priceChanges)
FROM (SELECT count(*) as priceChanges
FROM Table
WHERE DATE BETWEEN start AND end
GROUP BY product_id
)
UNION
SELECT count(*), product_id
FROM Table
WHERE DATE BETWEEN start AND end
GROUP BY product_id
第一行是整个总和,其余的是每个product_id的价格变化数。
我不喜欢这样的结果集,因为它需要应用程序端的逻辑来解析结果集。但是,如果您不想将其拆分并发出2个查询,则无论如何都需要应用程序逻辑。
你可以做的另一件事是只发出底部的select语句,并在处理结果集时计算所有计数的总和。
如果查询速度很慢,您可能需要考虑在日期列上创建索引。
答案 2 :(得分:0)
尝试这个。
SELECT COUNT(*) AS total,
product_id
FROM table
WHERE date BETWEEN 'fromDate' AND 'toDate'
GROUP BY product_id