存储过程-统计10年热点关键词
记录一下吧
1 USE [NPU_Group] 2 GO 3 /****** Object: StoredProcedure [dbo].[Proc_HotAndFutrueKeywords] Script Date: 02/05/2013 10:02:26 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- ================================================ 9 -- Proc Function : 研究热点和趋势统计存储过程 10 -- Create Date : 2013-02-01 11 -- Update Date : 2012-02-01 12 -- Create User : IsaacZhang 13 -- Update User : IsaacZhang 14 -- Description : 研究热点和趋势统计数据 15 -- Parameter : 16 -- ================================================ 17 ALTER PROCEDURE [dbo].[Proc_HotAndFutrueKeywords] 18 @year INT ,--年度 19 @groupIntId INT, --群组ID 20 @TopNum INT --取多少条热点数据 21 AS 22 23 24 --创建结果临时表 25 CREATE TABLE #tbResult( 26 KeywordIdInt INT , 27 KeywordId UNIQUEIDENTIFIER , 28 KeyWordName VARCHAR(200) , 29 ForeignName VARCHAR(200) , 30 IsTopic BIT , 31 HotYear INT, 32 TotalCount decimal(18, 2), 33 GroupIntId INT, 34 AmplificationNum decimal(18, 2), 35 Amplification decimal(18, 2), 36 AmpliFactor decimal(18, 2) 37 ) 38 --定义要输出的所有年份 39 DECLARE @YearCount INT 40 SET @YearCount = 10; 41 --声明变量 42 DECLARE @KeywordIdInt INT 43 DECLARE @KeywordId UNIQUEIDENTIFIER 44 DECLARE @KeyWordName VARCHAR(200),@ForeignName VARCHAR(200) 45 DECLARE @IsTopic BIT 46 DECLARE @TotalCount decimal(18, 2) 47 DECLARE @Amplification decimal(18, 2),@lastYearCount decimal(18, 2),@AmplificationNum decimal(18, 2) 48 ,@AmpliFactor decimal(18, 2) 49 50 DECLARE @CurrentYear INT 51 --如果群组ID不为0,则取全部关键词文献信息 52 IF @groupIntId!=0 53 BEGIN 54 55 BEGIN TRANSACTION Trans_HotAndFutrueKeywords --创建事务 56 --删除表中原数据 57 DELETE FROM dbo.Pt_FutureAmplification; 58 59 --初始化当前年 60 SET @CurrentYear = @year; 61 WHILE(@CurrentYear>=@year-@YearCount) 62 BEGIN 63 --声明游标 64 DECLARE hotKeywordsIndex CURSOR 65 FOR SELECT * FROM NPU_Core.dbo.Keyword 66 OPEN hotKeywordsIndex 67 FETCH NEXT FROM hotKeywordsIndex INTO @KeywordIdInt,@KeywordId,@KeyWordName 68 ,@ForeignName,@IsTopic 69 WHILE @@FETCH_STATUS = 0 70 BEGIN 71 --每次重新赋值 72 SET @TotalCount = 0; 73 SET @lastYearCount = 0; 74 PRINT '=============='+CAST(@CurrentYear AS VARCHAR(20))+'===============' 75 SELECT @TotalCount = COUNT(0) FROM View_ShareBib2Keywords WHERE KeywordIdInt =@KeywordIdInt 76 AND [Year] = @CurrentYear 77 78 SELECT @lastYearCount = COUNT(0) FROM View_ShareBib2Keywords WHERE KeywordIdInt =@KeywordIdInt 79 AND [Year] = (@CurrentYear-1) 80 --PRINT CAST(@TotalCount AS VARCHAR(20))+'<-current-------last->'+CAST(@lastYearCount AS VARCHAR(20)) 81 --增长数量 82 SET @AmplificationNum = @TotalCount-@lastYearCount; 83 --增长幅度 84 IF @lastYearCount!=0 AND @lastYearCount!=1 85 BEGIN 86 SET @Amplification = (@TotalCount-@lastYearCount)/@lastYearCount 87 --增长因素 88 SET @AmpliFactor = @AmplificationNum*@Amplification; 89 --如果增幅为负增长 90 IF(@TotalCount<@lastYearCount) 91 BEGIN 92 SET @Amplification = -round((@lastYearCount-@TotalCount)/@lastYearCount,3); 93 SET @AmpliFactor = -@AmpliFactor; 94 --PRINT '|||'+CAST(@Amplification AS VARCHAR(20)) 95 END 96 END 97 ELSE 98 BEGIN 99 SET @Amplification = (@TotalCount-@lastYearCount)/1.00; 100 SET @AmpliFactor = 0; 101 END 102 IF @TotalCount IS NULL 103 SET @TotalCount = 0; 104 105 INSERT INTO Pt_FutureAmplification VALUES( 106 @KeywordIdInt, 107 @KeywordId, 108 @KeyWordName, 109 @ForeignName, 110 @IsTopic, 111 @CurrentYear, 112 @TotalCount, 113 @groupIntId, 114 @AmplificationNum, 115 @Amplification, 116 @AmpliFactor 117 ); 118 --执行下一次游标操作 119 FETCH NEXT FROM hotKeywordsIndex INTO @KeywordIdInt,@KeywordId,@KeyWordName 120 ,@ForeignName,@IsTopic 121 END 122 --关闭游标 123 CLOSE hotKeywordsIndex 124 --释放资源 125 DEALLOCATE hotKeywordsIndex 126 SET @CurrentYear = @CurrentYear-1; 127 END 128 129 SELECT top ((@TopNum)) * FROM #tbResult 130 WHERE HotYear = ((@year-2)) 131 ORDER BY TotalCount DESC,HotYear DESC 132 IF @@ERROR=0 133 COMMIT TRANSACTION Pt_FutureAmplification -- 提交事务处理 134 ELSE 135 ROLLBACK TRANSACTION Pt_FutureAmplification --事务回滚 136 END
在编程的道路上,一往无前,埋头狂奔。
[奔跑的人生] | [segmentfault] | [spring4all] | [csdn] | [掘金] | [OSChina] | [简书] | [知乎] | [51CTO]
[奔跑的人生] | [segmentfault] | [spring4all] | [csdn] | [掘金] | [OSChina] | [简书] | [知乎] | [51CTO]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?