当前位置: 首页 > 面试题库 >

SQL的X总和X记录总和

史骏
2023-03-14
问题内容

我已经寻找了一段时间,但找不到该问题的答案(也许我没有搜索正确的术语或其他内容)。基本上,我有一个数据库,每个日期有任意数量的条目。我需要获取包含条目的最近X天的总和(忽略没有条目的天)。我知道如何找到每一天的总和。

假设我有一个名为“ Yield”的表格:

UnitID  Date        TestTime    NumMeasured NumPassing
1       2013-04-05  10:15       25          3
2       2013-03-31  10:12       30          1
3       2013-03-30  10:12       26          2
4       2013-03-29  10:30       11          1
5       2013-03-31  10:20       6           2
6       2013-04-05  10:30       5           0

然后,我使用以下查询:

SELECT DISTINCT 
    Date, 
    (
        SELECT SUM([NumMeasured]) 
        FROM [dbo].[Yield] T1 
        WHERE T1.Date = T2.Date
    ) AS 'NumMeasured', 
    (
        SELECT SUM([NumPassing]) 
        FROM [dbo].[Yield] T1 
        WHERE T1.Date = T2.Date
    ) AS 'NumPassing' 
FROM [dbo].[Yield] T2

要获取每天的通过/测量的总数,请执行以下操作:

Date        NumMeasured NumPassing
2013-03-29      11          1
2013-03-30      26          2
2013-03-31      36          3
2013-04-05      30          3

然后,我需要一个查询,该查询可以调用一个日期(例如我称它为4/05),该日期将获取包含条目的最近X(例如100)天,并返回该NumMeasured和NumPassing列的总和天。我无法使这一部分正常工作,我一直遇到我没有足够经验来解决的SQL问题。我正在寻找类似的东西

SELECT
    (
        SELECT TOP 100 SUM(T3.[NumMeasured]) 
        FROM T3 
        WHERE T3.Date <= '4/05/2013' 
        ORDER BY T3.Date
    ) AS 'NumMeasured', 
    (
        SELECT TOP 100 SUM(T3.[NumPassing]) 
        FROM T3 
        WHERE T3.Date <= '4/05/2013' 
        ORDER BY T3.Date
    ) AS 'NumPassing', 
    (
        SELECT DISTINCT 
            Date, 
            (
                SELECT SUM([NumMeasured]) 
                FROM [PhaseNoiseMonitoring].[dbo].[Yield] T1 
                WHERE T1.Date = T2.Date
            ) AS 'NumMeasured', 
            (
                SELECT SUM([NumPassing]) 
                FROM [PhaseNoiseMonitoring].[dbo].[Yield] T1 
                WHERE T1.Date = T2.Date
            ) AS 'NumPassing' 
        FROM [PhaseNoiseMonitoring].[dbo].[Yield] T2 
    )
AS T3

预期查询将返回

NumMeasured NumPassing
103         9

我意识到这是完全错误的,但是我真的无法弄清楚如何使其工作。


问题答案:

这是一个使用相关子查询的想法:

with bydays as (<your query here>)
select bd.*,
       (select sum(NumMeasured) from (select top 100 * from bydays bd2 where bd2.date <= bd.date order by date desc) t
       ) as Measured100,
       (select sum(NumPassingd) from (select top 100 * from bydays bd2 where bd2.date <= bd.date order by date desc) t
       ) as Measured100
from bydays


 类似资料:
  • 问题内容: 我想显示现有 Orders 表中的前3条记录。为此,我需要计算每种产品的数量之和。 现有记录: 预期产量 问题答案: 然后,您需要以下摘要值:

  • 问题内容: 我有一个具有“约会表”和“服务表”的数据库。每个appt都有一个服务,每个服务都有一个价格。我想要的是一个查询,该查询将始终返回12行(每月一行),并包含几个月的总和(基于其服务ID)。到目前为止,我有: 当前,返回的内容如下: 问题是,如果一个月没有任何订单,我不会在查询中返回该月。我希望该月有一个记录,只是它的“ monthly_total”等于零。 以下是我希望查询返回的内容:

  • 问题内容: 我有桌子 我希望从此表中至少获得30个随机物品,其中总价格等于500,那么实现此目的的最佳方法是什么? 我看过了这个解决方案,它看起来也有类似的问题。MySQL选择3个随机行,其中三行之和小于值 我想知道是否还有其他更易于实施和/或更有效的解决方案 问题答案: 如果您的产品列表满足以下 假设, 则有解决方案: 您有所有价格在0.00到500.00之间的产品。例如。0.01、0.02等至

  • 我正在使用Symfony 2.6 HTTP缓存,我在这里遵循Symfony cook book中的所有说明 但是,为什么响应总是x-symfony-cache:miss。我尝试修改privates头上的appmodification.php擦除数组。响应头是x-symfony-cache:get/page:fresh。 在我修改数组后,我遇到了新的问题,当我试图登录到我的网站时,我得到了错误或页面

  • 问题内容: 将OS X上运行的Python与基于云的SQL Server数据库接口的一种好方法是什么? 编辑: 随着pyodbc我得到这个错误: 问题答案: SQLAlchemy可能是您最好的选择。它具有ORM,但不需要使用。许多DBAPI项目都支持MS SQL。 对于低级接口,下面是SQLAlchemy站点上列出的三个具有原始Python和Unix支持的DBAPI项目: pymssql似乎是最简

  • 问题内容: 我才刚刚开始研究SQL。 我有一个SQL Server 2008r2数据库,它将返回两个字段DocDate和InvValue。我需要将InvValues汇总为今天的MTD和YTD,所以看起来像 我已经做了大量的Google搜寻,并且可以使用SUM&DATEPART进行一项或多项,但是我坚持尝试两者兼而有之。 有人可以给我一些伪代码,以帮助我进一步谷歌。 谢谢@戈登·利诺夫(Gordon