我试图制作一个sql,但它无法正常工作。
我有一张这样的表:
访问量|什么电脑有访问|什么是日期和时间
11 computer 1 2013-12-30 09:00:00
2 computer 2 2013-12-30 10:00:00
30 computer 2 2013-12-30 10:11:00
17 computer 3 2013-12-30 17:30:00
200 computer 4 2013-12-30 07:00:00
150 computer 1 2013-12-30 14:00:00
19 computer 1 2013-12-30 06:00:00
我想做的是一个结果,它只向我显示:在每台计算机中,有多少是最大访问次数和时间?上表中的结果os SQL将是这样的:
访问量|什么电脑有访问|什么是日期和时间
30 computer 2 2013-12-30 10:11:00
17 computer 3 2013-12-30 17:30:00
200 computer 4 2013-12-30 07:00:00
150 computer 1 2013-12-30 14:00:00
计算机2在2013-12-30 10:00:00的准确时间内最多可以进行30次 ........
问题是如何在每个结果中显示exacly日期? 有人帮忙吗?
感谢
答案 0 :(得分:5)
我认为您希望每台计算机访问次数最多的日期?您可以在CTE中使用row_number。 SQL Fiddle
with CTE
as
(select
accesses,
computer,
dt,
row_number() over (partition by computer order by accesses desc) rn
from
table1
)
select
*
from
CTE
where
rn = 1
答案 1 :(得分:3)
您可以使用子查询来执行此操作,其中您首先限制要查找的值,然后将它们连接回主表。我根据您的信息创建了一个示例。这适用于SQL 2005,允许使用特定日期/时间返回的最大访问次数,而不是将最大访问次数与最大日期相结合,这可能并不总是正确的。
CREATE TABLE #Tmp(QoA INT NOT NULL,
Computer VARCHAR(30) NOT NULL,
AccDt DATETIME NOT NULL)
Insert into #Tmp values (11,'computer 1','2013-12-30 09:00:00')
Insert into #Tmp values (2,'computer 2','2013-12-30 10:00:00')
Insert into #Tmp values (30,'computer 2','2013-12-30 10:11:00')
Insert into #Tmp values (17,'computer 3','2013-12-30 17:30:00')
Insert into #Tmp values (200,'computer 4','2013-12-30 07:00:00')
Insert into #Tmp values (150,'computer 1','2013-12-30 14:00:00')
Insert into #Tmp values (19,'computer 1','2013-12-30 06:00:00')
Select * From #Tmp
Select m.*
from #Tmp m
Join (Select Max(QoA) 'QoA', Computer
from #Tmp
Group by Computer) l
on m.qoa = l.qoa and m.computer = l.computer
Drop table #Tmp
结果 QoA Computer AccDt
200 computer 4 2013-12-30 07:00:00.000
17 computer 3 2013-12-30 17:30:00.000
30 computer 2 2013-12-30 10:11:00.000
150 computer 1 2013-12-30 14:00:00.000
答案 2 :(得分:2)
喜欢这个。
with MySortedData as
(
select
ROW_NUMBER() over(partition by computer order by quantity_of_access desc) as RowNum
, quantity_of_access
, computer
, datetimecolumn
from
mytable
)
select *
from MySortedData
where RowNum = 1
答案 3 :(得分:1)
您正在寻找的日期不是很清楚,但看起来您正在寻找最大日期,通过计算机分组并找到最大结果。
select
max(quantity_of_access),
computer,
max(datetimecolumn)
from
mytable
group by
computer