0 0

SQL问题:哪位帮把下面的distinct 语法换成exists语法格式20

SELECT LICENSE_NAME,USER_GROUP_NAME, AVG(USAGE) AS USAGE,
AVG(LICENSE_TOTAL) AS LICENSE_TOTAL,count(distinct CHECKOUTTIME) AS USERASKTIMES
FROM FLEXLM_LICENSE_USAGE a LEFT JOIN user_group as b
ON a.USER_NAME = b.USER_NAME and a.sampling_time = b.sampling_time
WHERE a.sampling_time >='2013-03-01 00:00:00' and a.sampling_time <'2013-03-31 00:00:00'
  AND to_char(a.sampling_time, 'mi')='00'
GROUP BY USER_GROUP_NAME,LICENSE_NAME
ORDER BY USER_GROUP_NAME;

这个SQL执行后,发现主要时间耗在了count(distinct CHECKOUTTIME)上,因此想想其换种写法试试,自己写了下没写出来,请大侠们来讨论下
2013年3月04日 10:23

3个答案 按时间排序 按投票排序

0 0

看着一堆关联查询,查询、连接、函数不知道有没有用好索引。
exists是和in相对的,有不同的使用环境。
真的是慢在count(distinct CHECKOUTTIME)这个上面?
如果联合索引用好了,把CHECKOUTTIME加到该索引的最后效果会更好。
如果执行计划比较详细,你会看到连接、去重复这类操作前会先进行排序;使用了索引就不会有排序操作,当然,前提是你建的索引被优化器选择了。

2013年3月08日 22:42
0 0

这个distinct不能改成exists吧。

如果先distinct掉,是不是逻辑就不对了?

恐怕只有把where条件拿进FLEXLM_LICENSE_USAGE a 做成子查询,再结合在计算了。

2013年3月04日 19:09
0 0

select LICENSE_NAME,USER_GROUP_NAME, AVG(USAGE) AS USAGE, AVG(LICENSE_TOTAL) AS LICENSE_TOTAL,count(distinct CHECKOUTTIME) AS USERASKTIMES
FROM FLEXLM_LICENSE_USAGE a
where EXISTS(
   select * from user_group as b where a.USER_NAME = b.USER_NAME and a.sampling_time = b.sampling_time and a.sampling_time >='2013-03-01 00:00:00' and a.sampling_time <'2013-03-31 00:00:00'   AND to_char(a.sampling_time, 'mi')='00'
)
GROUP BY USER_GROUP_NAME,LICENSE_NAME
ORDER BY USER_GROUP_NAME;

2013年3月04日 11:13

相关推荐

    LINQ_to_SQL语法及实例大全

    LINQ to SQL语句(1)之Where 2 Where操作 2 1.简单形式: 2 2.关系条件形式: 2 3.First()形式: 3 LINQ to SQL语句(2)之Select/Distinct 3 1.简单用法: 4 2.匿名类型 形式: 4 3.条件形式: 5 4.指定类 型形式: 6 ...

    SQL语句教程.pdf

    无论您是一位 SQL 的新手,或是一位只是需要对 SQL 复习一下的资料仓储业界老将,您 就来对地方了。这个 SQL 教材网站列出常用的 SQL 指令,包含以下几个部分: ♦ SQL 指令: SQL 如何被用来储存、读取、以及处理...

    SQL语法大全

    SQL语法大全 SQL语法大全 1. ASP与Access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...

    经典SQL语句大全

    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:...

    SQL21日自学通

    一般的语法规则 30 你的第一个查询 33 总结 37 问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的进一步处理 60 目标 60 汇总函数 60 COUNT61 SUM 61 AVG 63 MAX 63 MIN 64 VARIANCE65...

    精通SQL--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

    2009达内SQL学习笔记

    使用IN操作符的优点: 在长的选项清单时,语法直观; 计算的次序容易管理; 比 OR 操作符清单执行更快;最大优点是可以包含其他 SELECT 语句,使用能够动态地建立 WHERE 子句。 如 SELECT prod_id,prod_price,prod...

    SQL语句教程.doc

    SQL指令 2 SELECT 2 DISTINCT 3 WHERE 4 AND OR 5 IN 5 BETWEEN 6 LIKE 7 ORDER BY 8 函数 10 COUNT 11 GROUP BY 12 HAVING 13 ALIAS 13 表格链接 15 ...进阶SQL 35 ...EXISTS 42 ...算中位数 45 ...SQL语法 49

    超实用sql语句

    非常实用 不下后悔,word文档格式 总共18页 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE ...

    SQL Server 2008编程入门经典(第3版)

    第1章 RDBMS基础:SQLServer数据库的构成 1.1 数据库对象概述 1.1.1 数据库对象 1.1.2 事务日志 1.1.3 最基本的数据库对象:表 1.1.4 文件组 1.1.5 数据库关系图 1.1.6 视图 1.1.7 存储过程 1.1.8 用户自定义函数 ...

    MYSQL常用命令大全

    MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符...

    sql经典语句一部分

    经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...

    精通sql结构化查询语句

    SQL查询篇第6章 简单的SELECT语句查询 6.1 查询的基本结构 6.1.1 了解SELECT语句 6.1.2 SELECT语句的语法格式 6.1.3 SELECT语句的执行步骤 6.2 简单的查询语句 6.2.1 查询表中指定的字段 6.2.2 查询所有的字段 6.2.3...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    数据库操作语句大全(sql)

    数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题,重点讨论了SQL Server 2008的特殊功能以及与其他编程环境的不同之处。作者Robert Vieria是Microsoft SQL,Server方面的权威...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题,重点讨论了SQL Server 2008的特殊功能以及与其他编程环境的不同之处。作者Robert Vieria是Microsoft SQL,Server方面的权威...

    mysql数据库的基本操作语法

    create database [if not exists] dbName; 中括号部分可选的,判断该数据不存在就创建 4、 切换、使用指定数据库 use dbName; 5、 显示当前使用数据库所有的表对象 show tables; 6、 显示表结构describe(desc) ...

    T-SQL高级查询

    --高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 ...那么公式表表达式可以解决这个问题。 我们可以将公式表表达式(CET)视为临时结果集,在select、insert、update、delete...

Global site tag (gtag.js) - Google Analytics