Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算日期之间的分钟数,并获得前10名_Sql_Oracle_Plsql - Fatal编程技术网

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,很高兴我们能帮忙!