`
hwpok
  • 浏览: 254491 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

这条sql是不是太长了?

阅读更多
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->SELECT t.id,
  t.group_id,
  t.name,
  t.task_count,
  t.status,
  t.project_id,
  t.send_velocity,
  to_char(t.create_time,   
'YYYY-MM-DD HH24:MI'),
  to_char(t.send_date,   
'YYYY-MM-DD HH24:MI'),
  u.login_id,
  s.successcount,
  s.softbouncecount,
  s.hardbouncecount,
  s.sendedfailcount,
  s.sendedcount,
  s.opencount,
  s.sumopencount,
  s.clickcount,
  s.sumclickcount,
  s.registercount,
  
CASE
WHEN s.sendedcount != 0 THEN
  
ROUND(s.successcount / s.sendedcount * 100,   2)
ELSE
  
0
END successcountrate,
  
CASE
WHEN s.sendedcount != 0 THEN
  
ROUND(s.sendedfailcount / s.sendedcount * 100,   2)
ELSE
  
0
END sendedfailcountrate,
  
CASE
WHEN s.sendedcount != 0 THEN
  
ROUND(s.softbouncecount / s.sendedcount * 100,   2)
ELSE
  
0
END softbouncecountrate,
  
CASE
WHEN s.sendedcount != 0 THEN
  
ROUND(s.hardbouncecount / s.sendedcount * 100,   2)
ELSE
  
0
END hardbouncecountrate,
  
CASE
WHEN s.successcount != 0 THEN
  
ROUND(s.opencount / s.successcount * 100,   2)
ELSE
  
0
END opencountrate,
  
CASE
WHEN s.successcount != 0 THEN
  
ROUND(s.sumopencount / s.successcount * 100,   2)
ELSE
  
0
END sumopencountrate,
  
CASE
WHEN s.successcount != 0 THEN
  
ROUND(s.clickcount / s.successcount * 100,   2)
ELSE
  
0
END clickcountrate,
  
CASE
WHEN s.successcount != 0 THEN
  
ROUND(s.sumclickcount / s.successcount * 100,   2)
ELSE
  
0
END sumclickcountrate,
  
CASE
WHEN t.task_count != 0 THEN
  
ROUND(s.sendedcount / t.task_count * 100,   2)
ELSE
  
0
END sendedrate,
  
CASE
WHEN t.task_count != 0 THEN
  
ROUND(s.registercount / s.clickcount * 100,   2)
ELSE
  
0
END registercountrate
FROM tasks t,
  users u,
    (
SELECT SUM(
   
CASE
   
WHEN active > 0
   
AND active != 2 THEN 1
   
ELSE 0
   
END) successcount,
     
SUM(
   
CASE
   
WHEN(active > -5000
   
AND active < -500OR active = -1 OR active = -9999 OR active < -20000 THEN 1
   
ELSE 0
   
END) softbouncecount,
     
SUM(
   
CASE
   
WHEN(active > -500
   
AND active < -50OR active = -10001 OR active = -10002 THEN 1
   
ELSE 0
   
END) hardbouncecount,
     
SUM(
   
CASE
   
WHEN active < 0 THEN 1
   
ELSE 0
   
END) sendedfailcount,
     
SUM(
   
CASE
   
WHEN active != 0
   
AND active != 2 THEN 1
   
ELSE 0
   
END) sendedcount,
     
SUM(
   
CASE
   
WHEN

   
OPEN > 0 THEN 1
   
ELSE 0
   
END) opencount,
     
SUM(
   
CASE
   
WHEN

   
OPEN > 0 THEN nvl(

     
OPEN,    0)
   
ELSE 0
   
END) sumopencount,
     
SUM(
   
CASE
   
WHEN click > 0 THEN nvl(

     
OPEN,    0)
   
ELSE 0
   
END) clickcount,
     
SUM(
   
CASE
   
WHEN click > 0 THEN nvl(click,    0)
   
ELSE 0
   
END) sumclickcount,
     
SUM(
   
CASE
   
WHEN emigration IS NOT NULL THEN nvl(click,    0)
   
ELSE 0
   
END) registercount
   
FROM task_emails_143)
s
WHERE t.user_id = u.id
 
AND t.id = '143'
分享到:
评论

相关推荐

    sqlserver自动增长字段设置方法.rar

    这个特性使得我们无需手动为每条记录指定唯一的ID,系统会自动生成。 设置自动增长字段的步骤如下: 1. 创建新表: 在创建新表时,可以定义一个字段为自动增长类型。例如,创建一个名为`Employees`的表,包含`...

    Oracle中如何用一条SQL快速生成10万条测试数据

    本文将深入探讨如何利用一条SQL语句在Oracle中快速生成10万条测试数据,这对于数据库管理员和开发人员来说是一项极为实用的技能。 ### 核心知识点:使用SQL生成大量测试数据 #### 1. **理解ROWNUM和CONNECT BY ...

    通过SqlCmd执行超大SQL文件

    ##通过sqlcmd执行sql文件 由于sql文件过大,超过了100M,再数据库的窗口执行,结果超出内存了,对于特别大的sql文件可以使用sqlcmd进行执行 ###1.打开cmd窗口 运行–cmd–进入到sql文件所在的文件夹。 如果是win7可...

    Oracle中如何对超大规模数据(如超过2亿条)直接用SQL语句入库?

    在实际生产环境下,有时需将超大规模数据(如超过2亿条)导入分区表,但因原表与目的分区表的字段不一致,且用Kettle等转换工具极易失败,而用insert into select t1,t2.. from tab的Oracle SQL方式直接执行将导致...

    MySQL官网测试数据上百万条数据sql文件

    描述中提到,这个SQL文件包含约300万条数据,这意味着它可能是一个大规模的数据导入示例,这对于测试数据库的性能、并发处理能力和恢复机制等非常有用。在实际操作中,导入大量数据可能需要较长时间,因此在导入前,...

    打印JdbcTemplate执行sql

    当在一个事务中执行多条SQL语句时,如果其中一个失败,所有操作都将回滚,确保数据的一致性。你可以通过`JdbcTemplate`的`execute`方法执行一组SQL操作,并在需要时捕获并处理异常。 5. **性能优化**:通过日志,...

    SQL*Loader详细介绍

    加载完成后,可以通过查询数据库表来验证数据是否正确导入,或者使用SQL*Loader的自带功能如`BADFILE`和`DISCARDFILE`来追踪错误和忽略的记录。 6. **高级特性** - **转换和函数**:SQL*Loader支持在控制文件中...

    mybatis动态SQL语句

    if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis

    SQLServer数据库表中数据导出成SQL语句工具

    针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...

    SQL Pretty Printer(sql格式化).zip

    在使用SQL Pretty Printer时,用户可以导入包含多条SQL语句的文件,工具会逐一分析并进行格式化。此外,它可能还提供了自定义设置选项,允许用户根据个人喜好或团队规范调整缩进风格、换行规则、空格使用等格式细节...

    SQLTracker.rar

    2. 响应时间分析:除了记录SQL语句,SQLTracker还会记录每条语句的执行时间,这对于找出系统性能瓶颈至关重要。通过分析响应时间,可以迅速定位到耗时较长的SQL,进行优化。 3. PL/SQL过程监控:对PL/SQL过程的执行...

    解决字符长度8000限制

    在SQL Server中,默认情况下单条SQL语句的最大长度为8000个字符。当使用动态SQL生成复杂的查询或更新语句时,很容易超出这个限制。例如,在进行分组统计、动态构建复杂查询等情况时,如果涉及大量的字段或条件,可能...

    使用sql语句查询的数据按时间递增累加

    执行上述SQL语句后,每条记录都将包含一个额外的 `ۼԤ` 字段,显示截至该时间点的累计预计值。例如,对于第一条记录,“2013-01-01”的累计预计值为300;对于第二条记录,“2013-02-01”的累计预计值为380(即300+...

    SQL复习笔记,非常经典

    这篇笔记主要涵盖以下几个核心知识点: 1. **第一章 什么是数据库** - 数据库被定义为一种结构化的数据存储方式,它能确保数据的准确性和一致性。 - 数据库不仅仅是简单的文件,而是通过特定的结构和规则组织的...

    SQL Plus常用命令

    这条命令会让光标移动到下一条SQL语句的位置。 #### 五、`save`命令 `save`命令用于保存当前编辑的SQL语句到指定的文件中。这对于需要重复使用的SQL脚本来说非常方便。例如: ``` save d:\sql\sample.sql ``` 这...

    100万条数据导入SQL数据库仅用4秒

    本文将深入探讨如何将100万条数据高效地导入SQL数据库,只用短短4秒钟的时间。这个壮举展示了高级编程技巧和数据库管理策略的完美结合。 首先,我们要理解SQL数据库的基本原理。SQL(Structured Query Language)是...

    Access采用sql语句与sql的区别

    Access 采用 SQL 语句与 SQL 的区别 在讨论 Access 采用 SQL 语句与 SQL 的区别之前,我们需要了解 Access 和 SQL Server 的基本概念。Access 是一个桌面数据库管理系统,而 SQL Server 是一个关系数据库管理系统。...

    SQL手工注入完全篇

    5. **堆叠查询注入**:在一条SQL语句中执行多个查询。 三、SQL注入实战示例 以经典的登录页面为例,如果输入的用户名和密码没有被正确处理,比如: ```sql SELECT * FROM users WHERE username='$username' AND ...

    Excel导入SQLserver源码_excel2sql.zip

    这个压缩包文件"Excel导入SQLserver源码_excel2sql.zip"很可能包含了一个程序或脚本,用于自动化从Excel文件批量导入数据到SQL Server的过程。通常,这样的工具会使用编程语言如Python、C#、VB.NET或PowerShell来...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    存储过程允许开发者封装多条SQL语句和事务管理,这对于处理复杂的数据库操作是很有帮助的。但当这些操作过于庞大或设计不佳时,可能导致执行效率下降。例如,一个存储过程内部的嵌套查询、循环或临时表使用,如果...

Global site tag (gtag.js) - Google Analytics