计算 SQL 中的值有多少行?

Posted

技术标签:

【中文标题】计算 SQL 中的值有多少行?【英文标题】:Count how many rows are for a value in SQL? 【发布时间】:2016-09-22 11:52:03 【问题描述】:

我有一张如下所示的表格:

[ContractId]     [ContractDate] [SnapshotTimeId]    [DaysPastDue] [Exposure]

Int(not unique)  Datetime       Int(format20160431) Int           Int

表格按 ContractId、ContractDate 排序。

现在,我想添加第 6 列,我们称之为 Unique,它的第一个 ContractId 值的值为 1,然后加 1,直到遇到下一个 ContractId。基本上,我想知道每个 ContractId 有多少行,并将这些值递增地放在一列中。

编辑:我希望输出看起来像这样

>DocumentId ContractDate    SnapshottimeId  DPD Exposure Unique
>1          31-Aug-15       31-Aug-15       0   500      1
>1          31-Aug-15       30-Sep-15       5   450      2
>1          31-Aug-15       31-Oct-15       35  450      3
>1          31-Aug-15       30-Nov-15       7   350      4
>1          31-Aug-15       31-Dec-15       37  350      5
>1          31-Aug-15       31-Jan-16       67  340      6
>2          31-Aug-15       30-Jun-14       3   800      1
>2          31-Aug-15       31-Jul-14       15  760      2
>2          31-Aug-15       31-Aug-14       45  750      3
>2          31-Aug-15       30-Sep-14       75  750      4
>2          31-Aug-15       31-Oct-14       0   630      5
>2          31-Aug-15       30-Nov-14       15  590      6
>2          31-Aug-15       31-Dec-14       45  580      7

【问题讨论】:

您能否展示一些示例输入和预期输出 提供一些示例数据 当您说“添加第 6 列”时,您是指将其物理存储在数据库中,还是在您 select 数据时创建该值? 【参考方案1】:

我想你想要row_number():

select t.*,
       row_number() over (partition by contractid order by contractdate) as seqnum
from t;

这将增加一个值,这就是我认为您所描述的。

如果您只想计算每行中每个合约的行数,请使用:

select t.*,
       count(*) over (partition by contractid) as cnt
from t;

如果合同有六行,这将在每行中添加“6”。

【讨论】:

谢谢! row_number 是我要找的!【参考方案2】:

第一个 ContractId 值为 1,然后加 1,直到碰到下一个 ContractId

RowNumber 可以解决问题

select *,
Row_number() over (partition by contractid order by contractid) as countt
from
table

【讨论】:

【参考方案3】:

如果您想知道表格中的行号,请使用:

Select ContractId, 
    ContractDate, 
    SnapshotTimeId, 
    DaysPastDue, 
    Exposure, 
    row = ROW_NUMBER() OVER(ORDER BY [ContractId] asc) AS Row 
From YourTable

【讨论】:

以上是关于计算 SQL 中的值有多少行?的主要内容,如果未能解决你的问题,请参考以下文章

sql查询某字段多少种不同值,怎么写?

在python中,我如何对一列中每个值与另一列中的值发生的次数(多少行)建立矩阵?

SQL是计算两个日期相差多少天数的函数?

SQL 计算两个日期相差多少天数的函数

如何使用Python计算数组特定行中的值[重复]

SQL查询按整数值分组