同事的一个问题,列出所有用户返点最高的一条数据

代码
SELECT B.* FROM (SELECT DISTINCT [KeyinID] FROM DE_AtmosphereEvaluation) A
CROSS APPLY
(
SELECT TOP 1 B.*  FROM DE_AtmosphereEvaluation B WHERE A.[KeyinID]=B.[KeyinID] AND B.[PointID] NOT IN

(

SELECT [ID] FROM [DE_AtmosphereMonitoringPoint] WHERE [ESource]='上风向'

ORDER BY B.[Scoring] DESC 

) B

 

 

 

代码
--建立一个表值函数:  
CREATE FUNCTION [dbo].[GetTop]
(  
    
@Star varchar(50)
)
RETURNS TABLE
AS
RETURN
(
    
select top 3 Star,SongName,Hot from songstop where star = @Star order by hot desc
)

--使用cross apply 来连接 
select distinct b.star,b.songname,b.hot from songstop s
cross apply dbo.GetTop(s.star) b
order by star asc,hot desc

 

--  使用   partition by 分区  
select * from 
(
select Star,SongName,Hot,ROW_NUMBER() OVER (PARTITION BY Star ORDER BY Hot DESCAS ROWNO from songstop ) a where ROWNO<=3

 

 

 

 


 

 

 

 

 


 

 

相关文章:

  • 2022-12-23
  • 2021-12-19
  • 2022-02-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-08-16
猜你喜欢
  • 2021-05-13
  • 2021-11-24
  • 2021-06-16
  • 2022-01-26
  • 2022-12-23
相关资源
相似解决方案