SQL 会议消费记录统计
统计
/****** Object: Procedure [dbo].[JOB_UP_Summit_UserConfStat] Script Date: 2014-3-17 10:00:50 ******/
USE [ytSummitTeleConf_DB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO /*============================================================= =============================================================*/
CREATE PROC [dbo].[JOB_UP_Summit_UserConfStat]
@BeginTime DATETIME = NULL,
@EndTime DATETIME = NULL
AS
SET NOCOUNT ON DECLARE
@RangeBeginTime DATETIME,
@RangeEndTime DATETIME IF(@BeginTime IS NOT NULL AND @EndTime IS NOT NULL)
BEGIN
SELECT
@RangeBeginTime = @BeginTime,
@RangeEndTime = @EndTime
END
ELSE IF(@BeginTime IS NULL AND @EndTime IS NULL)
BEGIN
SELECT
@RangeBeginTime = CONVERT(CHAR(10), DATEADD(DAY, -1, GETDATE()), 120),
@RangeEndTime = CONVERT(CHAR(10), GETDATE(), 120)
END
ELSE
BEGIN
RAISERROR('日期范围错误!', 1, 16)
RETURN
END --通话消费
INSERT INTO WTC_TB_USERCONF_DetailStat
(
CONFROOM,
SeqNo,
startTime,
CallerNum,
CalledNum,
HoldTime,
Banlnce,
CallFlag,
MebID,
CreateTime,
ConfGUID,
BalanceType,
Data
)
SELECT
B.ConfROOM,
C.SeqNO,
C.startTime,
C.CallerNum,
C.CalledNum,
C.HoldTime,
C.ConsumeAmount AS Banlnce,
C.SubSerFlag AS CallFlag,
C.BatchCode,
GETDATE() AS CreateTime,
NEWID() AS ConfGUID,
C.BalanceType,
B.Data
FROM dbo.WTC_TB_USERCONF A WITH(NOLOCK)
INNER JOIN dbo.WTC_TB_CONFMEMBERS B WITH(NOLOCK)
ON A.CONFROOM = B.CONFROOM
INNER JOIN IB_UserConsumeList C WITH(NOLOCK)
ON A.SeqNo = C.SeqNo
--AND B.BatchID = C.BatchID
AND CAST(B.MebID AS VARCHAR(36)) = C.BatchCode
AND C.Serflag = 4
WHERE A.Flag = 1 --召开成功的会议
AND A.CONFTIME >= @RangeBeginTime
AND A.CONFTIME < @RangeEndTime --短信消费
INSERT INTO dbo.WTC_TB_USERSMS_DetailStat
(
CONFROOM,
SeqNo,
MsgID,
Mobile,
SendTime,
[State],
SmsID,
MessageContent,
SmsType,
Amount
)
SELECT
A.CONFROOM,
A.SeqNo,
B.MsgID,
C.Mobile,
B.SendTime,
B.[State],
C.SmsID,
MessageContent = [Message],
B.SmsType,
B.Amount
FROM dbo.WTC_TB_USERCONF A WITH(NOLOCK)
INNER JOIN dbo.IB_Sms_Send_Bill B WITH(NOLOCK)
ON A.CONFROOM = B.CONFROOM
INNER JOIN dbo.IB_Sms_Send_Detail_Bill C WITH(NOLOCK)
ON B.MsgID = C.MsgID
WHERE A.CONFTIME >= @RangeBeginTime --所有的会议都有可能收取短信费用
AND A.CONFTIME < @RangeEndTime --会议统计
INSERT INTO dbo.WTC_TB_USERCONF_Stat
(
CONFROOM,
SeqNo,
CONFTITLE,
CONFTIME,
confHoldTimeSum,
confBancleSum,
confBancleSumMoth,
CreateTime,
BillCallNum,
ConfCallNum,
SmsBancleSum
)
SELECT
A.CONFROOM,
A.SeqNo,
A.CONFTITLE,
A.CONFTIME,
ConfHoldTimeSum = ISNULL(B.ConfHoldTimeSum, 0),
ConfBancleSum = ISNULL(B.ConfBancleSum, 0),
ConfBancleSumMoth = ISNULL(B.ConfBancleSumMoth, 0),
GETDATE(),
BillCallNum = ISNULL(B.BillCallNum, 0), --计费通话数
ConfCallNum = ISNULL(C.ConfCallNum, 0), --会议通话数
SmsBancleSum = ISNULL(D.SmsBancleSum, 0)
FROM dbo.WTC_TB_USERCONF A WITH(NOLOCK)
OUTER APPLY
(
SELECT
ConfHoldTimeSum = SUM(CASE HoldTime%60 WHEN 0 THEN HoldTime ELSE (HoldTime/60+1)*60 END),
ConfBancleSum = SUM(Banlnce),
ConfBancleSumMoth = SUM(CASE WHEN BalanceType <> 3 THEN Banlnce END),
BillCallNum = COUNT(1)
FROM dbo.WTC_TB_USERCONF_DetailStat M WITH(NOLOCK)
WHERE M.CONFROOM = A.CONFROOM
) B
OUTER APPLY
(
SELECT ConfCallNum = COUNT(1)
FROM dbo.WTC_TB_CONFMEMBERS M WITH(NOLOCK)
WHERE M.CONFROOM = A.CONFROOM
) C
OUTER APPLY
(
SELECT SmsBancleSum = SUM(Amount)
FROM dbo.WTC_TB_USERSMS_DetailStat M WITH(NOLOCK)
WHERE M.CONFROOM = A.CONFROOM
) D
WHERE A.CONFTIME >= @RangeBeginTime
AND A.CONFTIME < @RangeEndTime GO
SQL 会议消费记录统计的更多相关文章
- SQL语句调优 - 统计信息的含义与作用及维护计算
统计信息的含义与作用 ...
- SQL Server里等待统计(Wait Statistics)介绍
在今天的文章里我想详细谈下SQL Server里的统计等待(Wait Statistics),还有她们如何帮助你立即为什么你的SQL Server当前很慢.一提到性能调优,对我来说统计等待是SQL S ...
- SQL Server-深入剖析统计信息
转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化 ...
- 最新电Call记录统计-full hash join用法
declare @time datetime set @time='2016-07-01' --最新的电Call记录统计查询--SELECT t.zuoxi1,t.PhoneCount,t.Phone ...
- SQL大数据操作统计
SQL大数据操作统计 1:select count(*) from table的区别SELECT object_name(id) as TableName,indid,rows,rowcnt FROM ...
- C# Linq to sql 实现 group by 统计多字段 返回多字段
Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: where u.fy_no == fy_no orderby u.we_no group u ...
- Oracle SQL调优记录
目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...
- oracle 、mysql、 sql server使用记录
oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...
- 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分
背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...
随机推荐
- Python selenium执行多个测试脚本时,浏览器多次打开登录账户
当类里面定义了 setUp() 方法的时候,测试程序会在执行每条测试项前先调用此方法:同样地,在全部测试项执行完毕后,tearDown() 方法也会被调用. 所以当在setUp()中执行打开浏览器后, ...
- Surprise团队项目总结
Surprise团队项目总结 项目实现情况 实现人人模式:2个用户在同一台电脑上进行切磋下棋,即实现五子棋游戏的基本功能 实现人机模式:初级模式已经实现,可以进行人机交互,但是还没达到智能判断下棋点 ...
- 转自一个CG大神的文章
<如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自 ...
- RY哥查字典
时间限制: 1 s 空间限制: 16000 KB 题目等级 : 钻石 Diamond 题目描述 Description RY哥最近新买了一本字典,他十分高兴,因为这上面的单词都十分的和谐,他天天查字典 ...
- CE 内存申请
char ch_ReadByte='H'; char *ptr_OneLineData; unsigned ); if ((ptr_OneLineData = (char *)malloc(bufsi ...
- S3C2416 看门狗
原理:看门狗自己有个硬件计数器,看门狗开启后,计数器就开始计数,当计数为0时触发,触发事件有两个:系统复位和中断,可设置屏蔽. 在计数器计数到0之前,程序可以重新设置计数器中的数值,称之喟狗.计数器的 ...
- pyqt4:在线程Qthread中使用定时器Qtimer
GUI main 部分,主app类中的__init__初始化方法中添加 实例化线程 self.s2_thread=Worker2() 初始化一个定时器 self.log_get=QtCore.QTim ...
- 关于vue.js中class与style绑定的学习
练习代码: html: <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- Xcode8更新CocoaPods报错解决办法
Apple发布了iPhone7同时也发布了xcode8,第一时间升级,并且用Xcode8集成cocoapods但是打开工程,会报一大堆错误解决这个问题 由于OSX的安全解决方案,所以默认路径不能安装, ...
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 Debug ...