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经典面试题及答案

    SQL经典面试题及答案 从给定的文件信息中,我们可以总结出四个重要的SQL知识点: 一、使用GROUP BY语句来统计分类结果 在给定的部分内容中,我们可以看到一个经典的SQL面试题,即如何使用GROUP BY语句来统计分类...

    经典sql语句(SQL经典面试题及答案,某外企SQL Server面试题L)

    本资源“经典sql语句”聚焦于SQL的经典面试题及其解答,旨在帮助求职者特别是针对SQL Server岗位的应聘者准备面试。以下将详细解析SQL的一些核心知识点,并结合可能的面试问题进行阐述。 1. **选择查询(SELECT)**...

    SQL经典面试题

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

    经典sql面试题

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

    sqlserver 经典面试题

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

    SQL经典面试题-很有用

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

    sql经典面试题 大家一起学习

    这里我们来看看几道经典的SQL面试题及其解题方法。 1. 第一题的目标是统计每天胜利('胜')和失败('负')的数量。我们可以使用`GROUP BY`语句来按照日期(rq)进行分组,然后通过`CASE`表达式计算胜和负的计数。...

    sql server经典面试题

    以下是一些常见的SQL Server面试题及解答: 1. 查询第30到第40条记录(主键ID可能不连续) - 方案一利用子查询找到第30条记录的ID,然后选取ID大于该ID的前10条记录。 - 方案二使用NOT IN操作符排除前30条记录,...

    文档3SQL经典面试题

    由于给定的文件信息没有实际的“部分内容”文字描述,而是提供了一个网址链接,我们无法从中提取关于“文档3SQL经典面试题”具体的知识点。不过,根据标题和描述,我们可以假设这篇文档可能包含了一些常见的SQL面试...

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

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

    sqlserver+sqlserver面试题及答案

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

    SQL常见的面试题集锦,非常详尽的题库,非常经典

    这个压缩包中的"SQL面试题"集合,无疑是一个全面且经典的SQL知识复习资源,适用于准备面试的求职者或希望提升SQL技能的从业者。 首先,我们要理解SQL的基本概念。SQL主要包括数据查询、数据更新、数据插入和数据...

    经典sql面试题及答案

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

    SQlServer面试题

    在SQL Server领域,面试题通常会涵盖数据库设计、性能优化、安全性、备份恢复以及服务器管理等多个方面。"为SQL Server配置一个邮件配置文件"这一描述则着重指向了SQL Server的数据库邮件功能,这是用于发送电子邮件...

    SQL_Server 面试笔试试题及答案

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

    经典SQL面试题及答案

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

Global site tag (gtag.js) - Google Analytics