Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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/9/csharp-4.0/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 前2个最大值,不包括重复值_Sql_Database_Db2 - Fatal编程技术网

Sql 前2个最大值,不包括重复值

Sql 前2个最大值,不包括重复值,sql,database,db2,Sql,Database,Db2,示例数据: Name | Domain | Count | datetime ---------------------------------------------------- John | google | 5 | 2019-07-09 01:00:01 John | apple | 6 | 2019-07-09 01:02:01 John | apple | 8 | 2019-07-09

示例数据:

Name       | Domain    | Count | datetime
----------------------------------------------------
John       | google    | 5     | 2019-07-09 01:00:01
John       | apple     | 6     | 2019-07-09 01:02:01
John       | apple     | 8     | 2019-07-09 01:03:01
John       | google    | 10    | 2019-07-09 01:11:01
John       | dos       | 1     | 2019-07-09 01:11:01
John       | dos       | 3     | 2019-07-09 01:11:01
预期产出:

Name       | max_Domain1| max_Count1 | max_Domain2 | max_Count2 | datetime
--------------------------------------------------------------------------
John       | google     | 10          | apple      | 8         |   2019-07-09
我尝试在分区上使用row_number,但它给我的日期值与前2个最大值相同

select t.*,
             row_number() over (partition by name, date(datetime) order by count desc) as seqnum
      from table t
      where datetime >= '2019-07-08' and
            datetime < '2019-07-09'

您只需要按年、月和日进行分区,而不是按整个日期时间进行分区:

with main as
    (
    select name,domain,count,datetime
    ,row_number() over (partition by 
    name,domain,count,year(datetime)*10000+month(datetime)*100+day(datetime) order by 
    datetime desc) as row_number 
    from table
    )
select *
from main
where row_number = 1

您只需要按年、月和日进行分区,而不是按整个日期时间进行分区:

with main as
    (
    select name,domain,count,datetime
    ,row_number() over (partition by 
    name,domain,count,year(datetime)*10000+month(datetime)*100+day(datetime) order by 
    datetime desc) as row_number 
    from table
    )
select *
from main
where row_number = 1
请尝试以下操作:

select name, domain, count,  CONVERT(varchar(10),datetime, 126) as datetime
from
(
select top 2 t.*
from tab t
where datetime >= CONVERT(datetime,'2019-07-08', 101) and
      datetime < CONVERT(datetime,'2019-07-10', 101)
order by row_number() over (partition by name, domain, cast(datetime as date) order by count desc) asc, count desc
) as t2
order by t2.datetime asc
示例

请尝试以下操作:

select name, domain, count,  CONVERT(varchar(10),datetime, 126) as datetime
from
(
select top 2 t.*
from tab t
where datetime >= CONVERT(datetime,'2019-07-08', 101) and
      datetime < CONVERT(datetime,'2019-07-10', 101)
order by row_number() over (partition by name, domain, cast(datetime as date) order by count desc) asc, count desc
) as t2
order by t2.datetime asc

示例

您似乎希望每天的计数最大:

select t.*
from (select t.*,
              row_number() over (partition by name, date(datetime) order by count desc) as seqnum
      from tab t
      where datetime >= '2019-07-08' and
            datetime < '2019-07-10'
     ) t
where t.seqnum = 1
order by count desc

您似乎希望每天的计数最大:

select t.*
from (select t.*,
              row_number() over (partition by name, date(datetime) order by count desc) as seqnum
      from tab t
      where datetime >= '2019-07-08' and
            datetime < '2019-07-10'
     ) t
where t.seqnum = 1
order by count desc

按名称、域、日期时间从\u文件组中选择名称、域、日期时间从\u文件组中选择名称、域、日期时间、最大计数按名称、域、日期时间更新的预期输出。请查收。很抱歉给您带来不便。已更新预期输出。请查收。很抱歉给您带来不便。