- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的 scheduled_jobs 表中的每个用户获取某个日期的第一个预定开始时间和最后一个预定结束时间。
我可以让它为一个用户工作,但是当每天为所有用户尝试时,我可以获得最后一次,但是第一次无法正确显示所有 user_id 的第一个 user_id 的时间。
这是我的代码:
SELECT DISTINCT on (user_id)
user_id, first_value(scheduled_jobs.at) over (order by user_id, scheduled_jobs.at ASC),
last_value(scheduled_jobs.to) over (order by user_id, scheduled_jobs.at DESC)
FROM scheduled_jobs
WHERE scheduled_jobs.at between CURRENT_DATE+INTERVAL'3 day' and CURRENT_DATE +INTERVAL '4 day'
当前结果示例:
user_id | first_value | last_value
19 | 2018-10-29 07:00:00 | 2018-10-29 17:00:00
30 | 2018-10-29 07:00:00 | 2018-10-29 15:00:00
37 | 2018-10-29 07:00:00 | 2018-10-29 16:30:00
Last_value 为每个 user_id 正确显示,但是 first_value 始终显示所有第一个 user_id 的值。
我已尝试使用 JOIN 和 USING 查询将它们拆分为不同的 SELECT 查询,但 first_value 的结果仍然不正确。
最佳答案
您需要一个 PARTITION BY
子句,它根据 user_id
生成帧
SELECT DISTINCT on (user_id)
user_id,
first_value(sj.at) OVER (PARTITION BY user_id ORDER BY sj.at ASC),
last_value(sj.to) OVER (PARTITION BY user_id ORDER BY sj.at DESC)
FROM
scheduled_jobs sj
WHERE
sj.at BETWEEN CURRENT_DATE + 3 and CURRENT_DATE + 4
另外:请小心使用last_value
。有时它不会按预期工作。 See here
您应该使用 first_value
和 DESC
排序:
first_value(scheduled_jobs.at) over (partition by user_id order by scheduled_jobs.at DESC)
关于sql - 每个用户 ID 的 first_value 和 last_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009583/
查询如下: with t as ( select 450 id, null txt , 3488 id_usr from dual union all select 449 , null
我有 2 列 - 订单号、值(value)。表值构造函数: (1, null) ,(2, 5) ,(3, null) ,(4, null) ,(5, 2) ,(6, 1) 我需要得到 (1, 5) -
这个答案显示了如何从代码生成高/低/开盘/收盘值: Retrieve aggregates for arbitrary time intervals 我正在尝试基于此 (PG 9.2) 实现解决方案,
我有一个表用作员工、部门和公司设置的分层数据集。员工可以在任何部门工作,当他们这样做时,如果他们没有指定,他们将继承部门设置。更具体的设置胜出,我想编写一个查询来获取特定员工/部门对的设置。 sett
MySQL 中的first_value 函数以意外格式返回varchar 列。 我有一个包含两列的表“测试” create table test (col1 varchar(10), col2 int
我相信基于以下两个问题,我需要使用 Oracle 函数 FIRST_VALUE : SQL - How to select a row having a column with max value O
我正在使用 pyspark 1.5 从 Hive 表中获取数据并尝试使用窗口函数。 根据 this存在一个名为 firstValue 的解析函数这将为我提供给定窗口的第一个非空值。我知道这存在于 Hi
我在 SQL Server 2012 中有一个表,如快照所示: 然后我使用 Last_Value() 和 First Value 来获取不同 YearMonth 的每个 EmpID 的 Average
我正在使用如下所示的表格: userID, eventDate, eventName 1 2019-01-01 buySoup 2 2019-01-01 buyEggs 2 2019-01-
我需要根据这张表准备一份报告,我只能阅读: 我们的想法是根据更高的事件识别为每个观察结果提供最后一个值。例如,观察 10 的值对应于事件编号 19。 到目前为止,这是我的代码: select firs
我是 LINQ 的新手,对于像我这样非常习惯普通 SQL 查询的人来说,学习它仍然是一个挑战。 我在 SQL 中有以下查询,使用左连接的子查询和 SQL Server 标准函数,如 FIRST_VAL
我的问题是从某个窗口的列中找到第一个值,这是带有查询的示例数据: WITH finishers AS (SELECT 'Bob' as name, TIMESTAMP '2016-10-18 2
如何在 Snowflake 中正确重写此代码? select account_code, date, sum(box_revenue_recognition_amount) as box
我正在尝试为我的 scheduled_jobs 表中的每个用户获取某个日期的第一个预定开始时间和最后一个预定结束时间。 我可以让它为一个用户工作,但是当每天为所有用户尝试时,我可以获得最后一次,但是第
我在使用 IGNORE NULLS 参数的 Vertica FIRST_VALUE() 分析函数中看到意外行为。它似乎在不应该返回 NULL 的时候返回了 NULL。 问题发生在这个非常小的表中: d
我在 SQL Azure 数据库中有一个不同时期的汇率表。 如: 1. USD-AUD, 2015-1-1 00:01, 0.70 2. USD-AUD, 2015-1-1 00:02,
First_value() 定义声明它返回有序数据集中的第一个值。它的语法是 First_Value(ColumnName) over ( [按列分区] [按列排序]) Partition By 和
我希望有人能提供帮助。假设我有这张表 sto_idpro_ido_dated_date381112021-04-01301112021-04-102021-04-10302222021-04-1530
我正在处理一些当前以 1 分钟间隔存储的数据,如下所示: CREATE TABLE #MinuteData ( [Id] INT , [MinuteBar] DATET
当我在手动构建的数据集上使用 FIRST_VALUE 时,我会得到一个结果,而当我在左连接产生的数据集上使用它时,我会得到不同的结果 - 即使数据集看起来我包含完全相同的数据值。我使用下面的简单数据集
我是一名优秀的程序员,十分优秀!