问题标签 [analytic-functions]
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.
oracle - Oracle在另一个表中获取按时间排序的前行和后行
我有 2 个表,每个表都有一个时间戳列。如何查询 A 中的每一行,B 中的第一个前后时间戳?
我想:
A.id A.timestamp first_preceding(B.timestamp) first_following(B.timestamp)
oracle - 在理解 Oracle 分析功能方面需要帮助
我有以下代码来检测单个表中的重复项:
我搜索了很多网站,发现大多数人都遵循这种有效的方式。但是我没有找到关于这些嵌套查询如何工作的正确解释。
sql - 消除类似行但具有特定值
我有用户表和 user_group 表。单个用户可以在多个组中。我有两个组管理员和用户。管理员组的组 ID 为 1,用户组的组 ID 为 2。当我选择加入这两个表时。我想使用两个表之间的连接来选择它:
我在每行中两次获得管理员。我想在此查询中以组 id 为用户即 1 的管理员消除其他行,我该如何实现?sqlfiddle在这里。_ 组相关信息在 all_groups 表中。
sql - 分配结果的 SQL 排序
给定这样的产品表:
我想构造一个查询来对产品进行排序,如下所示:
换句话说,查询应该显示最近更新的产品,由卖家分发,以尽量减少来自同一卖家的连续产品序列的可能性。
关于如何最好地做到这一点的任何想法?(请注意,此应用程序的代码是 Ruby,但如果可能的话,我想在纯 SQL 中执行此操作)。
编辑:
请注意,查询也应该处理这种情况:
产生以下结果:
oracle - Oracle 中的嵌套分析函数
我们可以在解析函数中使用嵌套解析函数吗?我们可以在表达式中使用另一个分析函数吗?
请给我一个例子。
sql - SQL Server 中的 over 子句
我有以下查询
产生的结果看起来像
这应该意味着表格中的两个日期之间的 patID 应该有 5 个唯一的药物名称。但是,当我运行以下查询时:
我返回的结果集看起来像
您可以看到,虽然实际上在 2008 年 10 月 17 日和 2009 年 1 月 15 日之间为第二个查询返回了五行,但只有三个唯一名称。我尝试了各种修改 over 子句的方法,但都具有不同程度的不成功。如何更改我的查询,以便仅在为每一行指定的时间范围内找到唯一的 s? drugName
sql-server-2008-r2 - 计算按日期范围拆分的值的先前出现次数
这是我们针对营销部门针对过去 90 天内收到的潜在客户的临时请求所做的简单查询。
他们要求添加更多派生列,以显示 EMAIL_ADDRESS 匹配的 ADDRESS_1 先前出现的次数。但他们想要的是不同的日期范围。
所以派生列看起来像这样:
当只有几个时,我使用更新语句手动填充了这些派生列。上面的查询实际上只是一个包含更多列的更大查询的示例。实际请求已扩展到 13 列的 6 个日期范围。我在问是否有比使用 78 个附加更新语句更好的方法。
sql - Oracle 按组划分为基于日期的序列
我正在尝试使用 PARTITION BY OVER 按某些列“分组”行。我对 PARTITION 的使用有所了解,但是我想按日期“阻止”分区。例如,如果我们有
我想按 col1 进行分区,但我希望最后一个 A 与前两个“不同”,因为它在日期方面被“B”行分隔。
如果我使用;
它会产生;
但我真正想要的是;
这可以使用 PARTITION BY OVER 吗?目前我已经退回到使用游标来解析数据并分配一个组 id,这样我就可以将两个“A”序列分开,但这很慢。
谢谢,
标记。
sql - Rolling averages in SQL Server 2012 using range
I’m trying to calculate a 3 month rolling average grouped by region and month, as in
Note that month is expanded for illustrative purposes, I’d really expect the output to just say a single month.
Now I can do this by creating a CTE grouping by region and month, then joining to it a couple times like
But that’s ugly, imagine if you had to do a 6 month rolling average or 12 month rolling average… I’m trying to use the t-sql 2012 analytic functions, specifically the RANGE option. I’ve used ROWS preceding before, but never range.
What I tried was
But I get a syntax error:
*Msg 8120, Level 16, State 1, Line 2
Column 'dbo.vw_score_by_region.month' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.*
Clearly I'm doing something silly, but I'm not sure what.
sql - 当不同的值改变时返回一个值
我有一个查询,它返回以下内容,除了最后一列,这是我需要弄清楚如何创建的。对于每个给定ObservationID
的,我需要返回状态更改的日期;类似于 LEAD() 函数,它需要条件而不仅仅是偏移量。可以做到吗?
我需要计算列更改日期;它应该是状态不是当前状态的最后日期。