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实践十二】机器学习算法基于信用卡消费记录做信用评分
背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...
随机推荐
- java虚拟机之引用
强引用: 类似:object A=new Object();这样的引用,只要强引用还存在,垃圾回收期就永远不会回收被引用的对象,eg:这里的new Oject(). 软引用: 一些还有用,但是非必 ...
- fcitx error
(ERROR-2016 /build/fcitx-J2yftF/fcitx-4.2.9.1/src/lib/fcitx/ui.c:165) no usable user interface.(ERRO ...
- 神奇的sort()函数
今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法, ...
- unity对话代码
这个是根据网上unity GUI打字机教程修改的 原教程是JS,我给改成了C#,然后增加了许多功能 这个教程能实现一段文字对话,有打字机显示效果,能写许多对话,能快进对话,总之现在RPG游戏里有的功能 ...
- 计算机网络自学之路------IP协议(2)
之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学. 本期说的是IP分组转发的内容,里面详细介绍了IP协议跟ARP协议,最后再给出一个例子,说明这两个协议在网络中传输的具体过程. 1)Ip ...
- IIC
IIC多主从,双向传输,只有两根线:一根数据,一根时钟,时钟必须由主机发出控制.初始化时主机把SCL和SDA的电平都拉高,然后在SCL保持高电平时SDA拉低形成一个开始信号,紧接着开始信号就开始发送要 ...
- CE 进程同步-事件
事件(event)分为有名的和无名的,使用有名事件的时候,在不同进程中创建的同名事件,其实就是同一个,这样就可以在不同的进程中使用了.两个进程里面都要创建事件,事件名要一致. //进程1 HANDLE ...
- linux 模块常用命令
lsmod | grep pcspkr 查看pcspkr模块是否运行modprobe -r pcspkr 删除pcspkr模块modinfo pcspkr 查看pcspkr模块信息m ...
- Python面向对象详解
Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是
- js数组键入值push和 arr[]i]区别
push 和 arr[i] 遍历 var arr = new Array(); $(":check").each(function(i){if(this.checked==true ...