sql - oracle - 选择特定组/sku的第一条和最后一条记录

2024-06-22

我一直在尝试寻找答案,但没有成功。

需要得到:首次购买的价格和最后一次购买的价格并按 SKU 分组。

查询结果应该是这样的:

sku      first_purchase_price      Last_purchase_price   
BC123    3.09                      6.68    
QERT1    9.09                      13.23

My Query

SELECT sku,PRICE,MAX(purchase_DATE),MIN (purchase_DATE)
FROM store
ORDER By sku

继续得到:

SQL Error: ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"

or

SQL Error: ORA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function"

任何帮助是极大的赞赏。

SKU     TRANSAC_ID  purchase_DATE      PRICE
----------------------------------------------
BC123   CHI0018089  21-OCT-09          6.98
BC123   CHI0031199  11-MAR-13          6.68 
BC123   NAP1000890  22-JAN-08          3.09 
BC123   NAP1011123  21-DEC-11          89.9 
QQQ789  NAP1000891  22-JAN-08          4.01 
QERT1   JOL0400090  8-MAR-12           13.23 
QERT1   NAP1000990  22-FEB-08          9.09 
QERT1   NAP1001890  28-FEB-09          2.09 
WW000   CHI0031208  11-MAR-13          200.01 
WW000   CHI0031298  11-MAR-13          200.01 
YZV11   JOL0200080  10-OCT-06          230.23 
YZV11   AUR0700979  14-APR-13          6.68 
YZV11   CHI0018189  03-OCT-09          556.98 
YZV11   JOL0300080  10-MAR-11          300   

您可以利用第一个/最后一个 http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions065.htm#SQLRF51413聚合函数 简化此类查询。

SQL小提琴 http://sqlfiddle.com/#!4/d9ea1/1

Query:

select
        sku,
        max(price) keep (dense_rank first order by purchase_date) first_purchase_price,
        max(price) keep (dense_rank last order by purchase_date) last_purchase_price
from
        store
group by
        sku;

Results http://sqlfiddle.com/#!4/d9ea1/1/0:

|    SKU | FIRST_PURCHASE_PRICE | LAST_PURCHASE_PRICE |
|--------|----------------------|---------------------|
|  BC123 |                 3.09 |                6.68 |
|  QERT1 |                 9.09 |               13.23 |
| QQQ789 |                 4.01 |                4.01 |
|  WW000 |               200.01 |              200.01 |
|  YZV11 |               230.23 |                6.68 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql - oracle - 选择特定组/sku的第一条和最后一条记录 的相关文章

  • 如何获取表中所有列的计数(*)?使用 PostgreSql

    我有一堆表 其中几个有数百列 我需要获取每列的非空值计数 并且我一直在手动执行此操作 我想找出一种方法来获取表中所有列的所有计数 我查了 stackoverflow 和 google 但找不到答案 我尝试了这个 但它只是为每列返回 1 的值
  • 按第一个字符分组

    我在 Oracle SQL 中的查询遇到问题 我有一个first name列中的employees桌子 我想根据中的第一个字符对记录进行分组first name 例如 我有 26 条记录 其中一条记录name Alice 一与name Bo
  • 声明日期,然后添加下一个工作日

    我没有得到我需要的结果 我想做的就是声明我的日期 然后添加下一个工作日 IE CASHDATE 1 这有效 但我需要下一个工作日是 5 号 DECLARE CASHDATE DATETIME SET CASHDATE 2016 12 02
  • MySQL:在一条语句上连接多个表

    我有以下数据库结构 层次结构 TABLE 产品类别 id name TABLE product id parent id name 父 ID 是产品类型 ID TABLE treeNode id parent id name type 它是
  • 原则 2 使用 LIKE 进行查询

    我有这个查询代码 repository em gt getRepository AcmeCrawlerBundle Trainings query repository gt createQueryBuilder p gt where p
  • “django.core.exceptions.ValidationError”错误

    我正在 Django 中编写一个简单的游戏 所有的事情都是正确的 但是突然 我遇到了以下错误 Django v 1 7 Python v 3 4 我不知道这些代码有什么问题 test alireza alireza test test1 p
  • 在sql中运行累积返回

    希望获得一系列每日收益的连续累积收益 我知道这可以使用 exp 和 sum 来解决 但我的返回序列不是使用 LN 计算的 希望在不使用循环的情况下解决这个问题 因为它们在 sql 中效率非常低 让它跑得快很重要 Dataset 期望的结果
  • 在 CodeIgniter、SQL 中调用布尔值的成员函数 result()

    我试图根据搜索关键字查看 data results 中有哪些数据 但每次都会出现上述致命错误 有人可以帮助我吗 我的控制器 public function execute search search term this gt input g
  • 选择视图的列

    我正在尝试选择 a 的列名称view以类似的方式选择information schema columns 我似乎找不到办法做到这一点 有其他人以前这样做过或者知道这是否可能吗 information schema columns Table
  • 从表变量中获取列的明确名称

    我可以这样声明一个表变量 DECLARE tv source TABLE c1 int providerName varchar 50 providerSMS varchar 50 如果我执行以下命令 我会看到类似于以下内容的表名称 468
  • ASP.NET MVC5 - 将用户保留在 Oracle 数据库中

    一旦创建了一个ASP NET MVC5项目 目标框架是 NET 4 5 1认证类型是个人用户帐户 那么配置项目以便将用户 声明 角色等保留在 Oracle 12c 数据库中的最优雅的方法是什么 我的意思是 如何在不影响自动生成的 MVC5
  • 如何在Oracle中获取每周数据

    我制作了一个矩阵报告 其中需要根据选择参数动态显示列 我有一个日期选择参数 如果我在选择参数上选择日期为 03 01 2010 2010 年 3 月 1 日 那么它应该显示为 3 月 1 日 3 月 7 日 这取决于你追求什么 如果您在接下
  • 使用 C# 检索 SQL Server 中具有 varchar 数据类型的字段的大小

    我正在使用 VS 2010 和 SQL Server 2008 在 ASP NET 中创建一个项目 我想检索具有以下内容的列的大小varchar数据类型 e g Varchar 20 我想要 20 而不是最大可能的大小varchar使用 C
  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • 即使为空也显示值

    我正在使用以下内容显示过去 7 天内添加的产品计数 即使 COUNT 0 我是否可以以某种方式定制查询以显示过去 7 天的所有产品 查询现状 SELECT DAYNAME dateadded DAY COUNT COUNT FROM pro
  • Oracle 中的 if(条件, then, else)

    MySQL MSSQL 有一个简洁的小内联 if 函数 您可以在查询中使用它来检测空值 如下所示 SELECT foo a field AS a field SELECT if foo bar is null 0 foo bar AS ba
  • 如何使用 SQL 计算一条路线的行驶次数?

    我需要确定在给定的日期范围内每辆车行驶特定路线的次数 但建立在数据库之上的 GPS 管理软件没有此功能 该数据库包含多个存储 GPS 路线和位置数据的表 路线由多个位置和序列号组成 位置是附加到名称的一组上限和下限纬度 经度值 车辆每分钟将
  • 使用非管理员帐户时,SQL Linked Server 返回错误“不存在登录映射”

    我有一个本地 SQL Server 2008R2 我已将链接服务器配置为远程数据库 当我使用 SQL 登录帐户登录本地服务器时 链接服务器工作得很好sysadmin服务器角色 我可以查询远程服务器 因此我知道链接服务器设置是正确的 但是 如
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo

随机推荐