问题标签 [lateral-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 在 SQL 中仅保存唯一的数据点
为简单起见:我们有一个有 2 列的表,value
并且date
.
每秒都会收到一个新数据,我们想用它的时间戳保存它。由于数据可以相似,为了降低使用率,如果数据与之前的条目相同,我们不保存它。
问题:鉴于在 24 小时内收到相同的值,只保存第一个value
&date
对。如果我们想查询“过去 1 小时的平均值”,有没有办法让数据库(PostgreSQL)看到过去一小时没有保存任何值并搜索最后一个现有值条目?
sql - 检索评论的回复数
我有以下 PostgreSQL 表来存储不同帖子的评论:
评论表:
commentID | parentID | postID | content | author | created
我现在想用一个查询来检索,给定一个 postID,对帖子的所有评论以及每个评论的回复数。如果 parentID 不为 null 并且等于其父项的 commentID,则评论是回复。
我尝试了类似以下的方法,我自己加入表格并查找匹配项,parentID = commentID
但我无法使其正常工作,希望得到一些帮助:)
sql - 用于循环记录的 SQL 查询
我有一张包含一百万条记录的表。这是带有一些示例数据点的表格结构 -
我需要编写一个会产生此输出的查询 -
给出患者 322 的第二个声明的原因20181008
是因为第一个和第二个具有相同的cd
值。
患者 322 的第三次索赔也被赋予了20181008
价值,即使它没有相同的cd
价值,因为它是患者的最后一次索赔。
患者 122 的第一个声明仍然为 NULL 的原因是该声明的cd
值不等于 42。
患者 122 的第三次索赔20190102
即使具有相同的cd
值也没有被赋予值的原因是因为他们先前索赔中的 thru_dt 相隔超过 30 天。
这是我迄今为止尝试过的 -
sql - SQL 使用特定输入查找对应的列并创建新的汇总表
数据是一个平面标准化表:
什么:
使用所选产品 (ABCDEDFHIJKL),查看各行以找到具有与所选产品相关的数据的列的相应位置。
期望的输出:
在 R 中做到这一点是直截了当的,我敢肯定,对于比我更懂 SQL 的人来说,这很容易
sql - 如何在Postgresql中将表的每一行扩展为可变数量的行
我有一个表,它定义了具有给定迭代次数的对象,假设这是一个轮数可变的游戏。
我想创建一个选择语句,它将为每场比赛生成一个每轮一行的表格。
sql - 如何将查询转换为使用联接?
我想编写一个查询,该查询使用“加入概念”来为每个订单返回自同一客户的上一个订单以来经过的天数。
我正在使用AdventureWorks2017
数据库,表Sales.SalesOrderHeader
我尝试了以下代码,但我实际上希望它通过连接概念:
sql - PostgreSQL中是否有一个函数可以计算列之间的字符串匹配(按行)
我想根据几个条件覆盖一个数字。
预期覆盖:
如果一个字符串(在我使用的示例中只是一个字母)在 3 列中出现至少 2 次并且数字列超过某个数字,则覆盖数值或
如果另一个字符串在 3 列中出现至少 2次且数值列多于某个其他数值,覆盖数值,否则保持数值不变。
我首先想到的方法有效,但前提是表格只有一行。这可以以某种方式扩展,以便它可以在更多行上工作吗?如果我的方法是错误的,请您指导我正确的方法吗?
请参阅SQL Fiddle
非常感谢任何帮助!
如果字母a在section_1,section_2,section_3和number >= 3中重复至少 2次,则用3 覆盖number或者如果字母b在section_1,section_2,section_3 和number >= 8中重复至少2次,则写8,否则留下编号不变
预期结果:
id 号
1 3
2 8
3 4
sql - 在 sql 中创建更多行的逻辑
我有一个 table1,我想将其转换为预期的表格。
- 列的预期表逻辑:
- cal:来自table1的cal。ID 来自 table1 的 ID。
- 代码:这取决于我们在 f_a 中是否有一个值,然后我们用 fp 作为代码创建一个新记录。与它相对应,我们检查是否填充了 f_a,如果是,则我们从 f_a 中获取该日期并放入同一 ID 的 Al 列中。我们还检查是否填充了 f_pl,如果是,则我们从中获取日期并将其放在 pl 列中。
- 如果代码是 lp,那么我们检查是否填充了 l_a,然后我们取该日期并将该日期放在 Al 中,以获取该代码和 Id。此外,我们检查是否填充了 lpl,如果是,则我们取该日期并将其放入 pl。
我只是 SQL 的初学者,所以对于如何开始它对我来说有点不知所措。请发布一些解决方案。
表格1:
预期输出:
更新:我在表中有更多的 ID,所以不是 CNT 是唯一的 ID。如果我使用 unpivot,那么它应该对所有 ID 遵循相同的逻辑。
sql - SELECT 子查询值的 SQL 条件
我想对我的选择子查询应用条件检查。我怎样才能做到最好?
这是初始查询:
我想添加 WHERE 条件subResult = :parameter
。并且:parameter
是可选的,意思是如果:parameter
为空,则在结果中包含行。
但是我无法subResult
在 WHERE 条件中引用子查询的结果。
我可以将子查询复制/粘贴到 WHERE 子句中,但这似乎很草率且容易出错: