使用 FIRST_VALUE 而不在分组依据中包含内部列

2023-12-19

我正在使用一个看起来像这样的表:

userID, eventDate, eventName
1  2019-01-01  buySoup
2  2019-01-01  buyEggs
2  2019-01-03  buyMilk
2  2019-01-04  buyMilk
3  2019-01-02  buyBread
3  2019-01-03  buyBread

我当前的查询是:

SELECT
    userID,
    FIRST_VALUE(eventName) OVER (
        PARTITION BY userID ORDER BY eventDate ASC
    ) AS firstBought 
FROM table 
GROUP BY userID

我觉得这应该返回:

userID, firstBought
1  buySoup
2  buyEggs
3  buyBread

相反,它给出了错误:

'错误:列“table.eventName”必须出现在 GROUP BY 子句中或在聚合函数中使用'

有没有办法获取这个值而不将其包含在按函数分组或创建子查询中?我正在使用 PostgreSQL。

如果我确实将其包含在 group by 子句中,它将返回

userID, firstBought
1  buySoup
2  buyEggs
2  buyEggs
2  buyEggs
3  buyBread
3  buyBread

我知道我可以将其设为子查询,然后按 userID、firstBought 进行分组,但我不想创建另一个子查询。


代替group by, use select distinct:

select distinct userID,
       FIRST_VALUE(eventName) over (partition by userID order by eventDate ASC) as firstBought 
from table ;

或者,您可以使用数组:

select userId,
       (array_agg(eventName order by eventDate))[1] as firstBought
from table
group by userId;

Postgres 没有“第一个”聚合函数,但是这个函数运行得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 FIRST_VALUE 而不在分组依据中包含内部列 的相关文章

随机推荐

  • 如何查看 xcode5 上的完整构建日志?

    我收到 lipo 错误 我想查看导致该错误的所有步骤 xcode UI 只向我显示错误本身 这是作为文本文件定位的还是 xcode 5 可以如何显示完整的日志 转到 Xcode 中的日志导航器 选择您想要检查的版本 然后按住 Control
  • 反应应用程序。无法对尚未安装的组件调用 setState

    当我尝试更改输入字段上的值时 收到以下警告 无法对尚未安装的组件调用 setState 这是一个空操作 但它可能表明您的应用程序中存在错误 相反 分配给this state直接或定义一个state 具有登录组件中所需状态的类属性 我无法理解
  • GetObject 和 VB6 ActiveX exe

    The VB6 有关 GetObject 的帮助 http msdn microsoft com en us library aa445016 VS 60 aspx说 您不能使用 GetObject 来获取对使用 Visual Basic
  • 使用 Spring @RestController 处理带有 ZonedDateTime 参数的 HTTP GET

    我正在创建一个端点 它将接收日期以在服务器端进行一些过滤 代码如下所示 RequestMapping value test method RequestMethod GET produces MediaType APPLICATION JS
  • 如何将合并标签用于RelativeLayout root?

    我有一个扩展的自定义视图RelativeLayout并在 xml 文件中定义其内容 有RelativeLayout作为其根 我怎样才能避免有两个RelativeLayouts在我的自定义布局膨胀之后 我尝试使用merge标记作为我在 xml
  • 强制 window.open() 在 chrome 中创建新选项卡

    我使用 window open 来填充具有不同内容的新窗口 主要是来自自动化流程的报告和存储的 HTML 我注意到 Chrome 在 window open 方面有一些非常不一致的行为 我的一些调用将创建一个新选项卡 首选行为 一些调用会导
  • 导出到 Excel 时 SSRS 报告颜色发生变化

    当我们将 SSRS 2008 报告导出到 Excel 然后将某个范围从该文件复制到另一个 Excel 文件时 报告中使用的颜色会更改为完全不同的颜色 当我们使用 条件格式 为某些数据着色时 这非常烦人 这些细胞具有特定的颜色 有什么想法吗
  • 包括与 Ant 一起使用的 Google AdMob SDK

    我正在使用 新的 AdMob SDK 按照以下说明进行操作这个谷歌网站 http code google com mobile ads docs android fundamentals html 我们应该整合GoogleAdMobAdsS
  • 更改 iPhone SDK 中的徽章和推送通知

    我尝试过推送通知教程 http mobiforge com developing story programming apple push notification services 它工作正常 但问题是徽章 当我单击视图时 会出现应用程序
  • 如何在 salesforce 中刷新 OAuth 2.0 中的 access_token

    我正在开发一个 salesforce 应用程序并使用 OAuth 2 0 登录 我有一个刷新令牌 如何通过 OAuth 2 0 向 salesforce 发送包含特定用户刷新令牌的请求来获取新的 access token 取自 在 Forc
  • Python 字节连接

    我想将字节字符串的第一个字节连接到字符串的末尾 a b x14 xf6 a a 0 我收到错误 Traceback most recent call last File
  • Crystal Reports 中按两个字段分组

    如何在水晶报表中按两个不同的字段进行分组 敌人的例子 val1 val2 val3 val6 val1 val12 val3 val7 val11 val2 val3 val8 val11 val12 val3 val9 我希望报告看起来像
  • HTML 选择框(下拉菜单)的高度

    有人可以确认它吗not可以更改单击选择框时显示的下拉列表的高度 select 的 size 属性使它看起来像一个列表 CSS 中的 height 属性也没有多大用处 确认的 下拉的部分设置为 显示所有条目所需的高度 或 The height
  • 如何在plsql中的过程体内创建游标

    我要创建光标动态地位于过程体内我也必须使用for loop而不是下面的代码 我做了动态游标 但无法使用 for 循环 PROCEDURE myprocedure AS LV TEST CUR SYS REFCURSOR LV QUERY V
  • 如何使用 SymPy 和 LaTeX 显示百分比字符

    我一直在使用 Sympy 来研究电力系统的方程 并且已经进行了很多处理 以便方程看起来不错且体面 所有值都包含遵循它们的单位 甚至通过方程组合也是如此 我认为这非常重要 因为目标是我正在编写的用于计算我的值的文档是我将呈现的最终文档 我正在
  • Scala (2.8) 清单如何工作?

    我有一些 Scala 代码大量使用了泛型 并且我从文档中了解到 在参数化约束中使用清单可以帮助我解决类型擦除问题 例如 我想实例化泛型类型的新对象 只是 我想更多地了解它是如何工作的 它几乎感觉就像某种哈希图 为每个调用站点获取一个条目 这
  • 我可以使用 mono 的 AOT 功能来本机“预编译”.NET DLL/EXE,以使它们更难进行逆向工程吗?

    我可以使用 mono 的 AOT 提前编译 功能来本机 预编译 我自己的一些 NET DLL 和 或 EXE 的全部或部分 以使它们更难以进行逆向工程吗 我正在使用 Windows 7 x64 但我也有 x86 XP 机器 和 NET 3
  • 使用 ASP.NET MVC 设置路由 {tenant}/{controller}/{action}/{id}?

    我想设置一个多租户 ASP NET MVC 应用程序 理想情况下 这个应用程序应该有一条路线 tenant controller action id each tenant代表应用程序的逻辑实例 简单地独立的多用户帐户 我仍然不清楚具体的细
  • Vuetify / DataTable:更改“显示分组依据”按钮的样式?

    我想使用 vuetify 数据表中的默认分组功能 它工作正常 但我想更改分组的默认按钮样式并将其替换为图标 那可能吗 如果我检查开发工具中的按钮 它只会显示 span group span 在文档中只找到这个 https vuetifyjs
  • 使用 FIRST_VALUE 而不在分组依据中包含内部列

    我正在使用一个看起来像这样的表 userID eventDate eventName 1 2019 01 01 buySoup 2 2019 01 01 buyEggs 2 2019 01 03 buyMilk 2 2019 01 04 b