我有一张销售交易表,我被要求仅报告在12个月内有两次销售的物品。例如:
id | Item | Sale Date
---------------------
1 | A | 2017-02-03
2 | C | 2016-05-04
3 | A | 2016-08-23
4 | B | 2016-03-25
5 | D | 2015-07-30
6 | A | 2013-04-19
7 | E | 2011-03-12
8 | B | 2017-05-20
9 | E | 2011-05-04
项目A有三个销售记录,但只有交易1&由于交易6超过交易3的12个月,因此应返回3。
项目B有两次销售,但相隔超过12个月,因此应排除。
项目E在12个月内有两次销售,因此应包括在内。
我用它来查找多个销售的条目:
SELECT * FROM salesdata.sales
INNER JOIN
(SELECT Item_Code, COUNT(*) c from salesdata.sales
GROUP BY Item_Code HAVING c > 1) as vals
ON sales.Item_Code = vals.Item_Code;
但无法弄清楚如何测试一件物品的两个销售额是否在12个月之内。
答案 0 :(得分:1)
您可以获取在过去12个月内销售的商品清单:
select s.*
from salesdata.sales s
where exists (select 1
from salesdata s2
where s2.item_code = s.item_code and
s2.sale_date >= s.sale_date - interval 1 year and
s2.sale_date < s.sale_date
);
您的问题不清楚您要对此信息做什么,但这会检索所有项目。
答案 1 :(得分:1)
<script src="/static/d3min.js" href="{{ url_for('static', filename='d3min.js') }}""></script>
<script type="text/javascript"charset="utf-8">
d3.text("/static/output.csv", function(data)
答案 2 :(得分:0)
SELECT s.*
from salesdata.sales s
INNER JOIN (
SELECT COUNT(item), item
FROM salesdata.sales
WHERE Sale Date >= DATEADD(year, -1, GETDATE())
GROUP BY item
HAVING COUNT(item) > 1
) b
on s.item = b.item
and s.Sale Date >= DATEADD(year, -1, GETDATE())