0 0

sql经典面试题一道 谁会解?5

1. 数据表
存货编号 日期 入数量 出数量
A001 2008-07-01 100
A001 2008-07-05 10
A002 2008-07-10 50
A001 2008-08-05 30
A002 2008-08-06 15
2. 得到如下结果:
存货编号 日期 入数量 出数量 结存
A001 2008-07-01 100 0 100
A001 2008-07-05 0 10 90
A001 2008-08-05 30 60
A002 2008-07-10 50 50
A002 2008-08-06 15 35
请用一条SQL语句实现

问题补充:
蔡华江 写道
oracle中使用over()解。

这道题目的要求是用sqlserver2005并且一条语句写出来

问题补充:
蔡华江 写道
oracle中使用over()解。


本道题目还有一个要求是使用sqlserver2005并且是一条语句写出来

问题补充:
小数点 写道
SELECT table.* , row_number() over(partition by 存货编号 order by 日期) as no, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m


感觉是这样,没有运行

入库数量是累减的并且通过时间排序我试了下不行

问题补充:
qinglintan 写道
select e.*,(select sum(inum-enum) from emp em where em.date<=e.date and em.id=e.id) from emp e;

还有一个要求就是算出在没有出库之前的入库累加数量

问题补充:
qinglintan 写道
里面的是查询的结存

结存还包括入库数量根据年份的结存,还有出库数量的结存

问题补充:
小数点 写道
实在不行的话,可以把排序写成order by 存货编号,日期 ; 就是先用存货编号排序,若相等,则用日期排序,你说的那个入库数量递减,是不是还有什么要求你没有写完,我觉得我有点看不懂


哦 那应该是我的回复是诱导了读者,那么我的意思是比如说:2008-07-01 A001的库数量是100但是没有出库,到了2008-07-05的时候有了出库记录那么如果我想统计不算出库数量的产品也即到了2008-07-05它的入库数量还是100,2008-08-06 还是100,并且显示出原来需要的效果那么怎么做呢?

问题补充:不好意思题目少了几个数据:(现在补充好)
1. 数据表
存货编号 日期 入数量 出数量
A001 2008-07-01 100
A001 2008-07-05 10
A002 2008-07-10 50
A001 2008-08-05 30
A002 2008-08-06 15
2. 得到如下结果:
存货编号 日期 入数量 出数量 结存
A001 2008-07-01 100 0 100
A001 2008-07-05 0 10 90
A001 2008-08-05 30 60
A002 2008-07-10 50 50
A002 2008-08-06 15 35
请用一条SQL语句实现

问题补充:
小数点 写道
我虽然不是完全理解,但是我觉得这样想应该没问题,就是产生一个新的列用来记录剩余的库存量,然后原来的入库量不变,应该就可以吧
SELECT table.* , row_number() over(partition by 存货编号 order by 日期) as no, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m
这是我原来的程序,table.*中有入数量这一个元素,并且我没有对他做任何改动,所以他的值不会变,结余是用m这个新的表给出的,所以作为结果,只是比原来的表多了一行no即编号和结余,我觉得满足了你的入库数量不变的要求

如果我不用row_number()函数能不能做到这一点,因为在Oracle或者是其他的数据库中没有改函数。

问题补充:
小数点 写道
SELECT table.*, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m
order by table.存货编号,table.日期
先根据存货编号排序若相同则根据日期排序

你试过了没有啊?我自己已经解决了!是另外一种方式不需要用任何函数,有两种方法。
2010年3月13日 01:55

8个答案 按时间排序 按投票排序

0 0

SELECT table.*, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m
order by table.存货编号,table.日期
先根据存货编号排序若相同则根据日期排序

2010年3月15日 10:02
0 0

我虽然不是完全理解,但是我觉得这样想应该没问题,就是产生一个新的列用来记录剩余的库存量,然后原来的入库量不变,应该就可以吧
SELECT table.* , row_number() over(partition by 存货编号 order by 日期) as no, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m
这是我原来的程序,table.*中有入数量这一个元素,并且我没有对他做任何改动,所以他的值不会变,结余是用m这个新的表给出的,所以作为结果,只是比原来的表多了一行no即编号和结余,我觉得满足了你的入库数量不变的要求

2010年3月14日 22:27
0 0

实在不行的话,可以把排序写成order by 存货编号,日期 ; 就是先用存货编号排序,若相等,则用日期排序,你说的那个入库数量递减,是不是还有什么要求你没有写完,我觉得我有点看不懂

2010年3月14日 15:47
0 0

row_number() over(partition by 存货编号 order by 日期)
这一句是先用根据存货编号分组在分组通过日期排序,是先分组在排序,满足一二两列,
至于你说的“入库数量是累减的”我有点不理解,说详细一点吧,共同进步

2010年3月14日 15:44
0 0

里面的是查询的结存

2010年3月13日 22:21
0 0

select e.*,(select sum(inum-enum) from emp em where em.date<=e.date and em.id=e.id) from emp e;

2010年3月13日 22:14
0 0

SELECT table.* , row_number() over(partition by 存货编号 order by 日期) as no, m.结余
FROM TAVBE,( SELECT 入数量-出数量  结余
                FROM TABLE )  m


感觉是这样,没有运行

2010年3月13日 15:26
0 0

oracle中使用over()解。

2010年3月13日 11:39

相关推荐

    sql经典面试题

    ### SQL经典面试题解析 #### 1. 查询分数高于80分的学生姓名 **问题:** 需要找出所有分数超过80分的学生姓名。 **解法:** - 使用子查询排除低于80分的记录。 - 或者使用`GROUP BY`与`HAVING`来过滤结果。 **SQL...

    SQL经典面试题

    ### SQL经典面试题解析 #### 1. 删除冗余记录 **题目描述:** 假设有一个表`table1`包含以下列:学号(自动编号)、姓名、性别和年龄。现在需要删除除了学号(自动编号)字段以外,其他字段都相同的冗余记录。 **...

    SQL经典面试题及答案

    ### SQL经典面试题解析 #### 1. 使用`GROUP BY`进行统计分析 **题目描述:** 假设有一个表格,记录了某段时间内的比赛结果(胜利或失败),如何编写SQL语句来统计每一天的胜利和失败次数? **示例数据:** - 日期...

    SQL经典面试题及答案 CASE

    《SQL经典面试题及答案解析》 SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。在面试中,SQL问题通常涉及到数据查询、聚合、分组、条件判断等多个方面,考察应聘者对数据库操作的...

    经典sql面试题

    ### 经典SQL面试题解析 #### 颇具挑战性的SQL面试题——删除冗余记录 **题目背景与分析** 在本题中,我们面对的是一个常见的问题:如何有效地处理数据库中的冗余数据。在实际应用中,由于各种原因(如数据导入...

    SQL Server数据库试题,SQL经典面试题及答案

    在SQL Server数据库领域,面试通常会涵盖多个方面,包括但不限于数据查询、表的创建与管理、索引、存储过程、触发器、事务处理、备份与恢复、性能优化以及安全性等。以下是一些基于这些主题的可能面试问题及其答案:...

    sqlserver 经典面试题

    【SQLServer经典面试题详解】 在SQLServer面试中,掌握基本的SQL语法和高级查询技巧是至关重要的。以下是一些常见的面试重点: 1. **DDL(数据定义语言)**:包括CREATE, ALTER, DROP和DECLARE等命令,用于创建、...

    SQL经典面试题-很有用

    以下是基于给定的面试题及其解决方案的详细解析: 1. **分组计数问题**: 这个问题旨在考察对`GROUP BY`、`CASE`语句以及聚合函数的理解。题目要求统计每天胜利和失败的次数。有三种不同的解决方案: - 第一种...

    sql语句的内联外联 经典面试题

    SQL语句的内联外联经典面试题 SQL语句的内联外联是一种常见的数据库查询技术,它可以根据不同的连接方式将多个表连接起来,提高查询效率和数据整合性。在面试中,SQL语句的内联外联经典面试题是一个非常重要的考察...

    sqlserver+sqlserver面试题及答案

    sqlserver+sqlserver面试题及答案 sqlserver+sqlserver面试题及答案 sqlserver+sqlserver面试题及答案

    经典sql面试题及答案

    在SQL面试中,掌握基本的查询技巧和...面试中,面试官可能会根据这些基础题进一步深入,比如询问性能优化、索引使用、子查询、窗口函数等更高级的概念。因此,熟悉这些基础并能灵活运用是成为优秀数据库管理员的关键。

    SQL经典面试题及答案.doc

    SQL经典面试题及答案 以下是根据给定的文件信息生成的相关知识点: SQL语句的group by应用 问题1:如何写SQL语句来生成如下结果? 胜 负 2005-05-09 2 2 2005-05-10 1 2 答案:可以使用三种方式来实现: 1)...

    SQL SERVER面试题

    以上是对SQL Server面试题的详细解答,涵盖了磁盘配置、集群管理、复制策略、索引优化、备份策略、数据库管理和DBA素质等多个方面,旨在全面展示SQL Server的相关知识和实际操作经验。这些问题的答案有助于面试者...

    SQL_Server 面试笔试试题及答案

    "SQL Server 面试笔试试题及答案" 本资源摘要提供了 SQL Server 面试笔试试题及答案,涵盖了数据库...* 本资源提供了 19 道 SQL Server 面试题,涵盖了数据模型、实体关系、SQL 语言、Transact-SQL 等多方面的知识点。

    经典SQL面试题及答案

    经典sql面试题及答案,所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开。本资源转载自网络,如有侵权,请联系上传者或csdn删除。

    SQLServer高频面试题及答案

    SQL Server高频面试题及答案 数据库基础知识篇 1. 主键、外键、超键、候选键 超键是关系模式中能唯一标识元组的属性集。候选键是最小超键,即没有冗余元素的超键。主键是数据库表中对储存数据对象予以唯一和完整...

    SQLServer面试题SQLServer面试题

    在SQL Server面试中,熟悉和理解SQL的基本语法和高级特性是非常关键的。下面将详细讨论SQL Server中的核心知识点,这些都是面试中可能遇到的问题。 1. 数据定义语言 (DDL): 包括CREATE, ALTER, DROP和DECLARE等命令...

Global site tag (gtag.js) - Google Analytics