-
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个答案 按时间排序 按投票排序
-
看着一堆关联查询,查询、连接、函数不知道有没有用好索引。
exists是和in相对的,有不同的使用环境。
真的是慢在count(distinct CHECKOUTTIME)这个上面?
如果联合索引用好了,把CHECKOUTTIME加到该索引的最后效果会更好。
如果执行计划比较详细,你会看到连接、去重复这类操作前会先进行排序;使用了索引就不会有排序操作,当然,前提是你建的索引被优化器选择了。2013年3月08日 22:42
-
这个distinct不能改成exists吧。
如果先distinct掉,是不是逻辑就不对了?
恐怕只有把where条件拿进FLEXLM_LICENSE_USAGE a 做成子查询,再结合在计算了。2013年3月04日 19:09
-
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
相关推荐
### SQLServer SQL语法大全 #### 创建数据库 在SQL Server中创建数据库是一项基本操作,通过`CREATE DATABASE`命令来实现。创建数据库时可以指定文件和日志文件的位置、初始大小及增长方式等参数。 **语法示例:**...
### ORACLE和SQL Server的语法区别 #### 一、概述 本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle...
SQL 中 EXISTS 的用法简介 exists 是 SQL 中最常用的子查询操作符之一,用于检测子查询是否返回至少一个记录。exists 的使用场景非常广泛,包括对多表之间的关系进行查询、检测记录的存在性等。 在 SQL 中,exists...
在SQL查询中,`EXISTS`和`NOT EXISTS`是两个非常重要的子查询操作符,它们主要用于判断子查询是否返回结果。本篇文章将详细介绍这两个关键字的用法,并通过实例进行解析。 首先,`EXISTS`的语法是:主查询中的条件...
### SQL语法知识点详解 #### 一、数据库操作 **创建数据库** - **语法**: `CREATE DATABASE 数据库名;` - **示例**: 创建名为`mydb`的数据库。 ```sql CREATE DATABASE mydb; ``` **删除数据库** - **语法**...
### SQL中EXISTS与IN的区别及应用场景 #### EXISTS详解 **定义与原理** - **基本概念**:`EXISTS` 是 SQL 中的一个谓词,用于判断子查询是否有结果返回,而不是关心具体的返回值。它主要关注子查询是否至少有一行...
而在SQLite中,由于其对`DISTINCT`的支持不如SQL Server那样全面,因此可能会出现一些问题。尽管如此,SQLite仍然支持基本的`COUNT(DISTINCT column)`功能。 #### 四、`LEFT OUTER JOIN`与其他类型的连接 SQLite...
无论您是一位 SQL 的新手,或是一位只是需要对 SQL 复习一下的资料仓储业界老将,您 就来对地方了。这个 SQL 教材网站列出常用的 SQL 指令,包含以下几个部分: ♦ SQL 指令: SQL 如何被用来储存、读取、以及处理...
**LINQ to SQL** 是 .NET Framework 中的一个技术,它允许开发者使用 C# 或 VB.NET 语言的查询表达式语法来操作数据库。本手册详细介绍了使用 LINQ to SQL 进行数据查询、操作和更新的各种方法,涵盖了从基础到高级...
- 示例SQL:`SELECT deptno FROM dept WHERE EXISTS(SELECT * FROM emp WHERE emp.deptno = dept.deptno);` - 示例SQL:`SELECT ename FROM emp WHERE job = 'CLERK' AND deptno IN (SELECT deptno FROM dept ...
### MySQL基本语法精要 MySQL是一种广泛使用的开源关系型数据库管理系统。掌握其基本语法对于进行高效的数据管理和查询至关重要。本文将全面概述MySQL的基本语法,包括DDL(数据定义语言)、DML(数据操作语言)、...
### JPA的JPQL语法总结 #### 基础概念 Java Persistence Query Language(JPQL)是Java Persistence API(JPA)中用于执行查询的一种语言。它与SQL非常相似,但更加面向对象,允许开发者使用实体类而不是表来编写...
本教程将详细讲解SQL的基本使用方法,包括基础语法、常用的SQL指令、数据筛选、函数应用、数据表操作、高级查询技巧以及SQL语法的具体应用实例。 基础语法方面,SQL语句一般由关键字、表名、列名和条件表达式等组成...
### SQL语句教程大全 #### 一、SQL基础指令概览 SQL(Structured Query Language),即结构化查询语言,是一种用于管理关系型数据库的标准语言。它不仅被用于数据的存储和检索,还广泛应用于数据的更新、删除以及...
SQL语法大全 SQL语法大全 1. ASP与Access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...
### SQL Server 数据库管理之 SQL 语句教程 #### SQL 指令概览与应用场景 **SQL(Structured Query Language)** 是一种用于管理和处理关系型数据库的标准语言。本教程旨在帮助初学者乃至有一定基础的专业人士掌握...
LINQ to SQL是一种.NET框架下的技术,用于将...以上内容涵盖了LINQ to SQL的核心语法和操作实例,旨在为读者提供一个全面、实用的参考资料,帮助他们掌握LINQ to SQL查询技术,从而更高效地进行数据库编程和数据管理。
### SQL21自学通知识点梳理 #### 一、SQL简介及历史 - **SQL简史:** - SQL(Structured Query Language,结构化查询语言)最初由IBM的程序员Raymond Boyce和Donald Chamberlin在20世纪70年代提出。 - 1979年,...
- `WITH FORMAT`:格式化备份文件。 - `NAME = '备份文件名'`:指定备份文件的名称。 **还原语句**: - **语法**: ```sql USE [需要还原的数据库名] RESTORE DATABASE [还原后的数据库名] FROM DISK = '...
以上就是本文介绍的一些常用的SQL编写规范,包括使用表别名、使用 `EXISTS` 代替 `IN`、使用 `UNION ALL` 代替 `UNION`、使用 `EXISTS` 代替 `DISTINCT` 以及保持SQL语句大小写一致。遵循这些规范不仅能够提高查询...