【发布时间】:2018-01-11 21:43:28
【问题描述】:
这是我的桌子
CREATE TABLE financials (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
CountryID VARCHAR(30) NOT NULL,
ProductID VARCHAR(30) NOT NULL,
Revenue INT NOT NULL,
cost INT NOT NULL,
reg_date TIMESTAMP
);
INSERT INTO `financials` (`id`, `CountryID`, `ProductID`, `Revenue`, `cost`, `reg_date`) VALUES
( 1, 'Canada', 'Doe' , 20, 5, '2010-01-31 12:01:01'),
( 2, 'USA' , 'Tyson' , 40, 15, '2010-02-14 12:01:01'),
( 3, 'France', 'Keaton', 80, 25, '2010-03-25 12:01:01'),
( 4, 'France', 'Keaton',180, 45, '2010-04-24 12:01:01'),
( 5, 'France', 'Keaton', 30, 6, '2010-04-25 12:01:01'),
( 6, 'France', 'Emma' , 15, 2, '2010-01-24 12:01:01'),
( 7, 'France', 'Emma' , 60, 36, '2010-01-25 12:01:01'),
( 8, 'France', 'Lammy' ,130, 26, '2010-04-25 12:01:01'),
( 9, 'France', 'Louis' ,350, 12, '2010-04-25 12:01:01'),
(10, 'France', 'Dennis',100,200, '2010-04-25 12:01:01'),
(11, 'USA' , 'Zooey' , 70, 16, '2010-04-25 12:01:01'),
(12, 'France', 'Alex' , 2, 16, '2010-04-25 12:01:01');
对于每个产品和日期组合,我需要获取前 5 天的收入。例如,对于产品“Keaton”,最后一次购买是在 2010 年 4 月 25 日,它只会将 2010 年 4 月 20 日至 2010 年 4 月 25 日之间的收入相加,因此它将是 210。而对于“艾玛” ,它会返回 75,因为它会将 2010-01-20 到 2010-01-25 之间的所有内容相加。
SELECT ProductID, sum(revenue), reg_date
FROM financials f
Where reg_date in (
SELECT reg_date
FROM financials as t2
WHERE t2.ProductID = f.productID
ORDER BY reg_date
LIMIT 5)
不幸的是,当我使用 https://sqltest.net/ 或 http://sqlfiddle.com/ 时,它说不支持“LIMIT & IN/ALL/ANY/SOME 子查询”。我的查询是否有效?
【问题讨论】:
-
我更改了成本和收入的数据类型,因为...很明显,不是吗?无论如何,请提供所需的结果