我知道这个问题已经被问过 100 次了,我查看了所有这些问题,但我有点卡住了,不得不寻求帮助
我有这样的表:
hivenumber Visitdate CombsNO WaxNo BeeBehave
------------------------------------------------
1 2017-11-10 10 2 4
2 2017-11-10 11 1 3
3 2017-11-10 12 3 3
1 2017-11-12 13 1 1
3 2017-11-11 14 5 2
起初我想通过 HiveNumber
Select HiveNumber
From tHivesDetails
Group BY HiveNumber
然后我想要CombNo
每个的最后一条记录HiveNumber
Select Top(1) CombNo
From `tHivesDetails`
Order By VisitDate Desc
然后我需要Wax
每个的总和HiveNumber
Select Sum(Wax)
From `tHivesDetails`
Group BY HiveNumber
最后我想要平均值 BeeBehave
Select Avg(BeeBehave)
From tHivesDetails
Group By HiveNumber
在这种情况下,我不知道如何将这些查询组合为 1 并拥有一张包含所有我需要的表。我阅读了大部分相同的问题,但不幸的是无法弄清楚如何做到这一点。
我想要这样的结果:
hivenumber Visitdate CombsNO WaxNo BeeBehave
------------------------------------------------
1 2017-11-12 13 Sum avg
2 2017-11-10 11 sum avg
3 2017-11-11 14 sum avg
“窗口函数”来救援。您可以使用带有 的聚合函数在结果的每一行上over clause
生成值。也允许使用 order by ,通过按日期降序在每个“分区”内进行排序,数字 1 被赋予“最近:”访问(由于分区,每个配置单元)。ROW_NUMBER()
select *
from (
Select *
, row_number() over(partition by HiveNumber order by VisitDate DESC) rn
, sum(Wax) over(partition by HiveNumber) sum_wax
, Avg(BeeBehave) over(partition by HiveNumber) avg_bb
From tHivesDetails
) d
where rn = 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句