- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以编写一个 MySQL 查询,从符合特定条件的项目中选择上一行的所有项目?
例如,要获取“估值”大于 5 的价格:
SELECT Price FROM table WHERE Valuation > 5
但是在估值升至 5 之上后的第二天,您将如何获得价格?
Date Price Valuation
01/06/2016 9.2 9
31/05/2016 9.3 5
27/05/2016 9.5 8
26/05/2016 9.7 7
25/05/2016 9.5 8
24/05/2016 9.3 4
23/05/2016 9.2 3
20/05/2016 9.2 5
19/05/2016 8.9 9
18/05/2016 9.1 4
17/05/2016 9.2 9
在此示例中,它将是 9.3、9.5、9.7、9.2 和 9.1
编辑:如果有帮助,可以将索引列添加到表中。
编辑:“一天后”是指表格中的下一行(而不是按时间顺序排列的第二天)
最佳答案
假设我们有
CREATE TABLE quotes(
`date` date not null primary key,
price numeric(5,1) not null,
valuation integer not null
);
INSERT INTO quotes VALUES
('2016-06-01', 9.2, 9),
('2016-05-31', 9.3, 5),
('2016-05-27', 9.5, 8),
('2016-05-26', 9.7, 7),
('2016-05-25', 9.5, 8),
('2016-05-24', 9.3, 4),
('2016-05-23', 9.2, 3),
('2016-05-20', 9.2, 5),
('2016-05-19', 8.9, 9),
('2016-05-18', 9.1, 4),
('2016-05-17', 9.2, 9);
然后下面的 SELECT
语句就可以了:
SELECT basedate, quotes.*
FROM
(
SELECT basedate, min(date) AS nextDate
FROM
(
SELECT * FROM
(SELECT date as basedate FROM quotes WHERE Valuation > 5) as dates
LEFT JOIN quotes ON dates.basedate < quotes.date
) as aggrtable
GROUP BY basedate
) as fullTable
LEFT JOIN quotes ON fullTable.nextDate = quotes.date;
让我们从内到外检查一下:
SELECT
语句检索对所有 VALUATION > 5
感兴趣的引号。条件成立的那些日期在此处称为 basedate
。aggrtable
确定日期,这些日期“晚于”基准日期,但最接近基准日期(使用 min
聚合函数)。quotes
中检索值,结果再次与原始表连接,使连接条件成为基准日期的“最小最近日期”。注意:这种非相等连接在大表上可能会变得丑陋:假设我们在数据库中有几十年的日期。第二天,估值超过 5。然后这个非等值连接将在结果中生成除前两个以外的所有日期。因此,如果你运气不好,这可能会导致 O(n²)
记录,这些记录需要临时生成,但随后会通过 min
的聚合再次压缩。因此,您的结果集最多只有 O(n)
记录,但可能需要 O(n²)
时间/空间。您还可以使用 EXPLAIN
语句来交叉检查此讨论;在那里你会发现一个 EXTRA = "Using temporary, Using filesort"
这在性能方面是非常糟糕的。
关于MySQL:选择上面的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635278/
我认为这应该不是一个大问题,但我自己找不到解决方案。一如既往:p 我有一个 UIWebView,其背景颜色设置为clearColor,但是当我尝试向下滚动太多时,我会在加载的 HTML 上方看到深灰色
我注意到,每当我重新安装我的应用程序时,IdentifierForVendor 都会不断变化。有没有办法让我的设备拥有相同的标识符?问题是,我需要确保标识符相同,因为我有一个备份系统,即使在删除并重新
一切都在标题中。 我有一个带有单元格的 UITableView。 cells 有一个Shadow (self.layer.shadow...)。 问题是一个单元格的阴影重叠上方的单元格。我怎样才能防止
我正在尝试创建一个切换开关,您可以在其中点击一侧,然后背景会滑过以使该侧“处于事件状态”。 为了适应可变宽度,我使用 display: table 设置了切换的两侧。这很好用。然后,我将第三个 div
我是一名优秀的程序员,十分优秀!