统计

/****** 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 会议消费记录统计的更多相关文章

  1. SQL语句调优 - 统计信息的含义与作用及维护计算

    统计信息的含义与作用                                                                                          ...

  2. SQL Server里等待统计(Wait Statistics)介绍

    在今天的文章里我想详细谈下SQL Server里的统计等待(Wait Statistics),还有她们如何帮助你立即为什么你的SQL Server当前很慢.一提到性能调优,对我来说统计等待是SQL S ...

  3. SQL Server-深入剖析统计信息

    转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html   概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化 ...

  4. 最新电Call记录统计-full hash join用法

    declare @time datetime set @time='2016-07-01' --最新的电Call记录统计查询--SELECT t.zuoxi1,t.PhoneCount,t.Phone ...

  5. SQL大数据操作统计

    SQL大数据操作统计 1:select count(*) from table的区别SELECT object_name(id) as TableName,indid,rows,rowcnt FROM ...

  6. C# Linq to sql 实现 group by 统计多字段 返回多字段

    Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: where u.fy_no == fy_no orderby u.we_no group u  ...

  7. Oracle SQL调优记录

    目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...

  8. oracle 、mysql、 sql server使用记录

    oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

  9. 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分

    背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...

随机推荐

  1. 获取url的html值

    //取当前页面的地址 例如http:127.0.0.1:80/aaa/index.html 返回http:127.0.0.1:80/aaa/function getUrlAddr(){ var str ...

  2. Android深度探索HAL与驱动开发 第二章 搭建Android开发环境

    通常以应用移植和系统移植的为Andorid系统移植的主要部分.同时为了适应不同平台硬件设备,对源代码进行相应的修改.除了要移植相适应的CPU架构,最重要是移植Linux驱动. 但是由于一些特别的原因, ...

  3. 补交作业-第八周PSP

    一.表格 C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间) 讨论 用户界面 9:30 10:40 15 55 编码 编码 13:20 16:30 10 180 ...

  4. 前端基础 JavaScript~~~ 数据处理 奇技淫巧!!!!!!

    常用的JS数据处理手段      2016-09-21          17:40:07 1.   number类型  数组中取出里面的最大/最小值: // 数组中取出 最小值 [数值] var n ...

  5. windows 下 webstorm 使用SVN

    1.安装了webstorm之后,用了很久都没有配置SVN 现在想配置svn,结果发现一般的svn程序不好用. 经指导,发现需要安装一个专用于webstorm的SVN 2.在file->setti ...

  6. Unity全视角跟随鼠标右键转换视角实现——研究笔记

    using UnityEngine; using System.Collections; public class CameraMove : MonoBehaviour { public Transf ...

  7. Extended TCP/IP Stack In Linux: Netfilter Hooks and IP Table

    https://www.amazon.com/gp/product/1118887735 The chapter about debugging is rather outdated - it des ...

  8. Lua简介

    Lua是一种扩展语言,脚本语言,还没有主程序的概念,类似于插件,也即不能直接使用,必须嵌入在牛逼的语言里使用,如Python. Lua由C语言编写,可以在宿主语言里写一段c程序,让Lua的解释器使用, ...

  9. C++ 取得系统当前时间

    #include <time.h> //* 方法一 time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t= localtime(&tt); p ...

  10. Gridview 分多页时导出excel的解决方案

    在开发会遇到将gridview中的数据导入到excel 这样的需求,当girdview有多页数据时按照一般的方式导出的数据只可能是当前页的数据,后几页的数据还在数据库内,没有呈现到页面上,传统的方式是 ...