假设我有一张桌子:
CREATE TABLE T
(
TableDTM TIMESTAMP NOT NULL,
Code INT NOT NULL
);
我插入一些行:
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:00:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:10:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:20:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:30:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:40:00', 0);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 10:50:00', 1);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:00:00', 1);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:10:00', 1);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:20:00', 0);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:30:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:40:00', 5);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 11:50:00', 3);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 12:00:00', 3);
INSERT INTO T (TableDTM, Code) VALUES ('2011-01-13 12:10:00', 3);
因此,我最终得到了一个类似于以下内容的表:
2011-01-13 10:00:00, 5
2011-01-13 10:10:00, 5
2011-01-13 10:20:00, 5
2011-01-13 10:30:00, 5
2011-01-13 10:40:00, 0
2011-01-13 10:50:00, 1
2011-01-13 11:00:00, 1
2011-01-13 11:10:00, 1
2011-01-13 11:20:00, 0
2011-01-13 11:30:00, 5
2011-01-13 11:40:00, 5
2011-01-13 11:50:00, 3
2011-01-13 12:00:00, 3
2011-01-13 12:10:00, 3
我该如何选择每组相同数字的第一个日期,所以我得到了以下结果:
2011-01-13 10:00:00, 5
2011-01-13 10:40:00, 0
2011-01-13 10:50:00, 1
2011-01-13 11:20:00, 0
2011-01-13 11:30:00, 5
2011-01-13 11:50:00, 3
我整天大部分时间都在忙着子查询之类的事情,由于某种原因,我似乎无法破解它。我敢肯定某个地方有一个简单的方法!
我可能想从结果中排除0,但目前并不重要。
我敢肯定某个地方有一个简单的方法!
就在这里。但是首先是两个问题。
该表不是关系数据库表。它没有唯一的密钥,这是RM和规范化所要求的(特别是每一行必须具有唯一的标识符;不一定是PK)。因此,用于在关系数据库表上操作的标准语言SQL无法对其执行基本操作。
因此,真正的问题是 SQL在非关系堆中查找数据集的第一个匹配项 。
现在,如果您的问题是使用 SQL在关系表中查找数据的第一个出现
,那当然意味着有一些唯一的行标识符,这在(a)SQL中很容易,并且(b)在任何SQL风格中都是快速的。 。
* 除了甲骨文,甲骨文的[ **子查询处理能力很差**](https://stackoverflow.com/questions/4265213/how-to-turn-2-queries-with-common-columns-a-b-and-a-c-into-just-one-a-b/4279443#4279443) (特别是托尼·安德鲁斯(Tony Andrews)的评论,他是甲骨文的知名机构)。在这种情况下,请使用实体化视图。
。
无论如何,我不想回避这个问题。为什么我们不使用真实的示例,而不是简单的通用示例?并
在关系表中找到另一组数据中一组数据的第一个或最后一次出现,或最小值或最大值 ?
主要查询
让我们使用上一个问题中的“
ata模型”
。
报告Alerts
自某个日期以来的所有信息,以及持续时间的峰值,Acknowledged
由于您将为所有时间和历史记录需求使用完全相同的技术(具有不同的表名和列名),因此您需要完全了解子查询的基本结构及其不同的应用程序。
请注意,您不仅拥有带有关系标识符(复合键)的纯5NF数据库,而且还具有完整的时间能力,并且在不破坏5NF(无更新异常)的情况下呈现了时间要求,这意味着
ValidToDateTime
期间和持续时间为派生的,并且在数据中不重复。要点是,这使事情变得复杂,因此,这
不是Subqueries教程的最佳示例 。
首先,根据所需结果集的 结构
,使用最小联接等构建外部查询,仅此而已。首先解析外部查询的结构非常重要;否则,您将来回尝试使子查询适合外部查询,反之亦然。
Alerts
在特定日期后获取所有(未确认)该
****
本文向大家介绍Python中首次出现真数,包括了Python中首次出现真数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们需要在给定的数字列表中找到第一个出现的非零数字。 与枚举和下一个 我们起诉枚举以获取所有元素的列表,然后应用下一个函数以获取第一个非零元素。 示例 输出结果 运行上面的代码给我们以下结果- 与下一个和过滤器 将next和filter条件以及lambda表达式应用于条件不
问题内容: 在SQL Server中,我试图计算自过去5天首次观察到与今天相同的天气(今天假设是2018年8月6日)以来的天数。每个镇。 数据如下: 这需要执行得很好,但到目前为止,我只想针对每个镇进行单个查询(并且将会有数十个镇,而不仅仅是四个镇)。这行得通,但不会扩展。 这是多伦多的那个… …正确返回4,因为今天有雨,而过去5天内第一次下雨是8月3日。 但是我想要返回的是一个像这样的表: 这怎
问题内容: 假设我有一个包含以下值的表。 所以我想构造以下输出。 它仅获取列中每个元素的计数。 我在列出唯一列时遇到了问题。 谁能告诉我该怎么做? 我已经弄乱了和,但是无法获取左侧的值列表。 问题答案: 你是这个意思吗
假设我有一个数组 查找出现次数最多的项的最有效和“pythonic”方法是什么?它在列表中出现了多少次?
我们有一个列表: 每个条目是一个由两个字符串组成的字符串,由空格分隔。目标是找到出现次数最多的所有条目(即10.0和10.3,共出现2次)。 下面的代码有效。问题是,这3条语句是否可以减少到1条或至少2条?
问题内容: 我有两个表:产品和订单。订单通过ProductID引用产品作为外键。我想知道每种产品已售出多少次,包括仅售出一次的产品。我几乎可以使用左联接来使其工作,但是对于所有产品,无论它们是否存在于orders表中,它仍然会为每一行提供一个计数为1的行。 有没有一种方法可以使您最终得到这样的结果? … 等等。 问题答案: 如果您只执行a ,那么您会将没有订单的产品计为1 … ,这将只计算具有非n