Sql 计算日期之间的分钟数,并获得前10名
因此,我有一个表,其中包含两个不同的日期,我选择了以下日期之间的分钟差:Sql 计算日期之间的分钟数,并获得前10名,sql,oracle,plsql,Sql,Oracle,Plsql,因此,我有一个表,其中包含两个不同的日期,我选择了以下日期之间的分钟差: select customerID, customers.telNumber, sum(round((enddate - startdate) * 1440)) over (partition by telNumber) total_mins from table; 在那之后,我只想得到前5名中分钟数最多的,比如 rank() over (partition by total_mins o
select customerID, customers.telNumber,
sum(round((enddate - startdate) * 1440)) over (partition by telNumber) total_mins
from table;
在那之后,我只想得到前5名中分钟数最多的,比如
rank() over (partition by total_mins order by total_mins)
你会怎么做呢?像这样的东西应该适合你:
SELECT *
FROM (
SELECT customerId, telNumber, rank() over (order by total_mins) rnk
FROM (
SELECT customerId,telNumber,
sum(round((enddate - startdate) * 1440)) over (partition by telNumber) total_mins
FROM YourTable
) t
) t
WHERE rnk <= 10
这将为您提供领带,因此它可以返回10多行。如果只想返回10行,请使用行号而不是秩
像这样的东西应该适合你:
SELECT *
FROM (
SELECT customerId, telNumber, rank() over (order by total_mins) rnk
FROM (
SELECT customerId,telNumber,
sum(round((enddate - startdate) * 1440)) over (partition by telNumber) total_mins
FROM YourTable
) t
) t
WHERE rnk <= 10
这将为您提供领带,因此它可以返回10多行。如果只想返回10行,请使用行号而不是秩
我想在sgeddes的例子中补充一点,rank和row_number的组合是最好的,因为rank可能会为所有行或少数行返回相同的秩值。但行数总是不同的。我会在Where子句中使用row_number,而不是rank。我会在sgeddes的示例中添加rank和row_number的组合是最好的,因为rank可能会为所有行或少数行返回相同的秩值。但行数总是不同的。我会在Where子句中使用row_编号,而不是rank。非常感谢,这正是我需要的:@junkystu-np,很高兴我们能提供帮助!非常感谢你,这正是我需要的:@junkystu-np,很高兴我们能帮忙!