库存的明细表,我用sql汇总了库存量,然后按生产日期排序。我可以怎么取每只物料的第一行数据。
物料名称 | 日期 | 库存量 |
---|---|---|
A | 2024-10-07 | 50 |
A | 2024-10-09 | 49 |
A | 2024-10-10 | 48 |
B | 2024-10-02 | 49 |
B | 2024-10-06 | 49 |
请问大佬们,我怎么取7号的A, 2号的B
SELECT "物料名称", any_value("日期") as "日期", any_value("库存量") as "库存量" FROM 表名 group by "物料名称"
以下内容来自 AI
在SQL中,你可以使用GROUP BY
和ORDER BY
语句来实现你的需求。但是,直接选择每个分组的第一条数据需要一些额外的逻辑,因为SQL标准本身不提供直接选择每个分组第一条记录的方法。
以下是一些常见的数据库系统中实现这个需求的方法:
如果你的数据库支持窗口函数,你可以使用ROW_NUMBER()
来为每个分组内的记录分配一个序号,然后选择序号为1的记录。
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY 物料名称 ORDER BY 生产日期 ASC) AS rn
FROM 你的表名
) AS subquery
WHERE rn = 1;
这里,ROW_NUMBER()
函数为每个物料名称的分组内的记录分配一个序号,序号是根据生产日期升序排列的。外层的查询则选择序号为1的记录。
如果你的数据库不支持窗口函数,你可以使用子查询和聚合函数来实现。
SELECT *
FROM 你的表名 AS a
WHERE (物料名称, 生产日期) IN (
SELECT 物料名称, MIN(生产日期)
FROM 你的表名
GROUP BY 物料名称
);
这个查询首先找出每个物料名称分组的最小生产日期,然后从原表中选择这些记录。
另一种方法是使用表的自连接来找到每个分组的第一条记录。
SELECT a.*
FROM 你的表名 a
LEFT JOIN 你的表名 b
ON a.物料名称 = b.物料名称 AND a.生产日期 > b.生产日期
WHERE b.物料名称 IS NULL;
这个查询通过自连接找到每个物料名称的更早记录,然后选择那些没有更早记录的记录(即每个分组的第一条记录)。
请根据你的具体数据库系统和表结构调整这些查询。如果你需要更具体的帮助,请提供数据库类型和表结构的详细信息。
分组、编号、筛选
select * from (
select * , row_number()over(partition by 物料 order by 日期 ) as 编号 from 表 ) as bb where bb.编号='1'
这是记录用户下载的表,想统计表内每个文章被下载了几次,也就是需要拿到一个文章ID,然后再求下这个ID出现的次数。
我有一个熊猫,如下所示: 我想按进行分组并获取每个组的第一行: 预期成果: 我尝试了下面的方法,它只给出了< code>DataFrame的第一行。任何关于这方面的帮助都将不胜感激。
我读了很多线程,但没有得到正确的解决我的问题。和这根线不相上下 这是基于一个包含大量表和机器值的非常大的数据库。我选择了我感兴趣的列,并通过它们的内置表ID将它们链接起来。现在,我必须减少我的结果,我得到了许多相同值的行,只是ID改变了。我只需要一(第一)行的“tph.tph_id”与像这样的机制 或者类似这样的东西。到目前为止,我无法实现适当的子查询或使用SQL函数。您的帮助将非常感谢。结果如下
目录 13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 13.1.5. CREATE TABLE语法 13.1.6. DROP DATABASE语法 13.1.7. DROP INDEX语法 13.1.8. DROP TABLE语法
导语 SQL即结构化查询语言,是关系数据库的标准语言。前面两节中已经在Qt里利用QSqlQuery类执行了SQL语句,这一节我们将详细讲解该类的使用。需要说明,因为我们重在讲解Qt中的数据库使用,而非专业的讲解数据库知识,所以不会对数据库中的一些知识进行深入讲解。 环境:Windows Xp + Qt 4.8.4+Qt Creator2.6.2 目录 一、创建数据库连接 二、操作结果集 三、在SQ
本文向大家介绍oracle中得到一条SQL语句的执行时间的两种方式,包括了oracle中得到一条SQL语句的执行时间的两种方式的使用技巧和注意事项,需要的朋友参考一下 oracle中如果需要得到一条SQL语句的执行时间可以用如下2种方式