相关疑难解决方法(0)

按年份和月份选择总计数()组?

例如,想象一下如下表

select accountid, createdon from account

73C56F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:47.000
A7C56F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:48.000
B7C56F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:48.000
FBC56F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:49.000
CBC66F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:54.000
87C66F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:53.000
53C76F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:55.000
87C76F61-5FF1-E111-A4F8-005056977FBC    2012-08-28 22:26:56.000
2ED89924-5CFC-E111-A4F8-005056977FBC    2012-09-11 22:01:51.000
C0D79924-5CFC-E111-A4F8-005056977FBC    2012-09-11 22:01:49.000
Run Code Online (Sandbox Code Playgroud)

然后在2012年1月,该计数是10个帐户

select count(*) from account
Run Code Online (Sandbox Code Playgroud)

假设我在2012年2月有5个新帐户,然后count(*)在2012年2月查询返回15个帐户.如果我在2012年3月有10个新帐户,那么count(*)在2012年3月查询总共会返回35个帐户.

我想得到以下结果

2012-january-10 accounts
2012-febrary-15 accounts
2012-march-  35 accounts
Run Code Online (Sandbox Code Playgroud)

表帐户中的创建日期是日期,

但是如果我这样做的话

select year(createdon), month(createdon), count(*) quantity
from accounts
group by year(createdon), month(createdon)
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

2012-january-10 accounts
2012-febrary-5 accounts
2012-march-  20 accounts
Run Code Online (Sandbox Code Playgroud)

那么如何通过简单的查询获得第一个结果呢?不是循环

sql sql-server group-by sql-server-2005 count

5
推荐指数
1
解决办法
3337
查看次数

SQL Server聚合函数查询

我有一个名为MusicTrack的表,其中包含MusicTrackID,TrackName和Duration列.

我正在使用查询:

    Select Cast(DateAdd( ms,SUM(DateDiff( ms, '00:00:00', Duration)), '00:00:00' ) as time) 
as 'Total duration' from   
    MusicTrack  where MusicTrackID = '1' or MusicTrackID = '3'
Run Code Online (Sandbox Code Playgroud)

此查询将两个选定音乐曲目的持续时间相加,并将其显示在称为总持续时间的临时列中.'Duration'的数据类型为Time,因此我将其转换为整数并再次返回.

我的问题:我可以通过哪种方式调整查询,还包括TrackName字段和运行总持续时间?或者包括临时列以及TrackName列.

这样显示器将具有TrackName和Total duration ......沿着以下行:

TrackName   Duration   Total duration

Name1       00:03:00     00:03:00
Name2       00:03:01     00:06:01
Run Code Online (Sandbox Code Playgroud)

我试图将TrackName列包含在这样的查询中,但它不起作用:

Select TrackName, Cast(....) From MusicTrack  where MusicTrackID = '1' or MusicTrackID = '3'
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-server

5
推荐指数
1
解决办法
60
查看次数

使用SQL计算跨客户的运行计数和运行总计

我有下表(SQL Server 2012):

DID - cust id
GID - order id
AMT - order amt
Gf_Date - order date
SC - order reversal amount
Run Code Online (Sandbox Code Playgroud)

我正在尝试计算客户的连续订单数量和销售总额,以便我可以为客户实现累计销售额$ 1,000的时间点分配标记。第一步,我运行以下查询:

Select
  [DID]
, [AMT]
, [Gf_Date]
, COUNT([GID]) OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) [RunningGift_Count]
, SUM([AMT]) OVER (PARTITION BY [DID] ORDER BY [Gf_Date]) [CumlativeTotal]
FROM [dbo].[MCT]
WHERE [SC] is null
ORDER BY [DID]
Run Code Online (Sandbox Code Playgroud)

但是我收到错误消息:

消息102,级别15,状态1,第3行'order'附近的语法不正确

我在较早时发布了此消息,并粘贴了错误的错误消息。遗憾和歉意。您在上面看到的是我得到的结果。有人评论说此语法不正确。现在一切正常,有人可以告诉我我做错了吗?

谁能帮我吗?在任何地方都找不到解决方案!谢谢!

sql sql-server sql-server-2012

4
推荐指数
1
解决办法
2万
查看次数

将一列中上一行的值添加到当前行的另一列

嗨,我在这样的表格中有一个专栏

Amount 
1
2
3
4
5
6
7
Run Code Online (Sandbox Code Playgroud)

我希望我的函数或存储过程的结果是这样的

output
--------

1
3
6
10
15
21
28
Run Code Online (Sandbox Code Playgroud)

针对上述专栏请帮我解决这方面的问题

sql sql-server sql-server-2008

4
推荐指数
1
解决办法
1905
查看次数

SQL查询 - 查找超出累积比例的行

假设我有一个数据表,如下所示:

ItemNo    |    ItemCount   |    Proportion
------------------------------------------
1              3                0.15 
2              2                0.10
3              3                0.15
4              0                0.00
5              2                0.10
6              1                0.05
7              5                0.25
8              4                0.20
Run Code Online (Sandbox Code Playgroud)

换句话说,总共有20个项目,并且每个ItemNo总和的累积比例为100%.表行的排序在这里很重要.

是否可以执行没有循环或游标的SQL查询来返回超过累积比例的 ItemNo一个?

换句话说,如果我想要检查的'比例'是35%,那么第一行超过那个ItemNo 3,因为0.15 + 0.10 + 0.15 = 0.40

同样,如果我想找到超过75%的第一行,那就是ItemNo 7,Proportion直到那一行的总和小于0.75.

sql sql-server cumulative-frequency

3
推荐指数
1
解决办法
1660
查看次数

SQL - 对行进行分类

以下是我正在使用的结果集.我想要的是一个额外的列,它将X行标识为相同.在我的结果集中,第1-4行是相同的(想要标记为1),第5-9行是相同的(标记为2); 第10行(标记为3)

这怎么可能只使用SQL?我似乎无法使用rank或dense_rank函数执行此操作.

ranking              diff        bool
-------------------- ----------- -----------
1                    0           0
2                    0           0
3                    0           0
4                    0           0
5                    54          1
6                    0           0
7                    0           0
8                    0           0
9                    0           0
10                   62          1
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008-r2

2
推荐指数
1
解决办法
260
查看次数

SQL中前一列加当前列的总和

说我有下表:

 Id     Grade 1    Grade 2    Grade 3
  1       1           1         1  
  2       5           0         0
  3       3           1         5
Run Code Online (Sandbox Code Playgroud)

我希望结果完全如下:

 Id     Grade 1    Grade 2    Grade 3      Total
  1       1           1         1            3
  2       5           0         0            8
  3       3           1         5            17
Run Code Online (Sandbox Code Playgroud)

总计应该是当前列+之前总计的总和.

这可能在MYSQL中吗?

sql sql-server

1
推荐指数
1
解决办法
184
查看次数

将列汇总到SQL中的当前行?

我正在尝试将列添加到当前行(在SQL Server中).我该怎么做呢?

select t1.CounterTime,
       t1.StartTime,
       t1.EndTime,
       isNull(t1.value, 0) as value1,

       -- How do I make Total1 the sum of t1.value over all previous rows?
       sum( isNull(t1.value, 0) ) over (partition by t1.CounterTime order by t1.CounterTime) as Total1

from   SomeTable t1
order by t1.CounterTime
Run Code Online (Sandbox Code Playgroud)

但我partition by弄错了......

?????????????????????????????????????????????????????????????????????????????????????????????????????
?   ?      CounterTime        ?        StartTime        ?         EndTime         ? value1 ? Total1 ?
?????????????????????????????????????????????????????????????????????????????????????????????????????
? 1 ? 2015-03-17 12:00:00.000 ? 2015-03-17 00:00:00.000 ? 2015-03-18 00:00:00.000 ?     0  ?     0  ?
? 2 ? …
Run Code Online (Sandbox Code Playgroud)

sql sql-server partitioning sum

1
推荐指数
1
解决办法
1895
查看次数

SQL - 累计销售百分比

我有一个包含两列的表 - 您可以调用下面的表 SalesSummary,例如:

Rank, Sales Dollars
1, $700
2, $200
3, $100
Run Code Online (Sandbox Code Playgroud)

我想编写一个查询来添加新列 - 累计销售百分比:

Rank, Sales Dollars, Cumulative Sales Percentage
1, $700, 70%
2, $200, 90%
3, $100, 100%
Run Code Online (Sandbox Code Playgroud)

关键部分是累积的,例如排名 2 的条目应该是 90%,因为它将 700 美元 + 200 美元加在一起,加上 1000 美元的总额,得到 90%。

有什么建议吗?非常感谢您的帮助!

sql ssms sum

1
推荐指数
1
解决办法
6710
查看次数

在单个查询中更新具有不同值的多个行

我在数据库(SQL Server 2005)中有一个总帐表,包含列(ID,Insertion_Date,Invoice_No,Debit,Credit和Balance).

当用户添加一些条目时,他将被给予填写发票号码.和金额(借方)因此余额将自动添加为余额=余额 - 金额.无论如何,在为同一发票设置多行之后,用户决定编辑前一行的金额.编辑金额后,同一行和其他行的余额应自动更改.(如:编辑的行将采用新的金额,如:Balance = Balance - newamount,其他行将采用新余额和sub.及其当前金额).

示例:表格GL

ID   Date       Invoice_No    Debit    Credit    Balance
---------------------------------------------------------
1   19/3/2014    123456        0        400        400
2   19/3/2014    123456       100         0        300
3   20/3/2014    123456        50         0        250
4   21/3/2014    123456       100         0        150
5   22/3/2014    123456        50         0        100
Run Code Online (Sandbox Code Playgroud)

在使用ID 2编辑行并在借记列上进行更改(而不是100使其为50)之后,其他行将受影响,因此结果应如下所示.

ID   Date       Invoice_No    Debit    Credit    Balance
---------------------------------------------------------
1   19/3/2014    123456        0        400        400
2   19/3/2014    123456        50         0        350
3   20/3/2014    123456        50         0        300
4   21/3/2014    123456       100         0 …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server

0
推荐指数
1
解决办法
501
查看次数

MS Sql server中的累计总数

可能重复:
计算SqlServer中的运行总计

我需要在ms-sql server中获取一列的累积(运行)总数.即如果存在名为"Marks"的列,则对应于每行累积和将是当前行和前一行的总和.我们可以在不使用连接的情况下获得结果吗?因为我的查询非常大.

我已经包含了一个示例表和数据:

CREATE TABLE "SCORE_CHART" 
   (    
        "STUDENT_NAME" NVARCHAR(20), 
        "MARKS" INT
   )

INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD1', 95);
INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD2', 90);
INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD3', 98);

SELECT STUDENT_NAME, MARKS FROM SCORE_CHART;
Run Code Online (Sandbox Code Playgroud)

预期结果: 在此输入图像描述

在oracle中,它很容易编写如下:

SELECT 
  STUDENT_NAME,
  MARKS,
  SUM(MARKS) OVER (ORDER BY STUDENT_NAME) CUM_SUM
FROM SCORE_CHART
ORDER BY STUDENT_NAME;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

sql t-sql sql-server sql-server-2005 sql-server-2008

-1
推荐指数
1
解决办法
1万
查看次数