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

连接join的sql语句优化,join的统计语句,sum用法

    博客分类:
  • sql
sql 
阅读更多

连接 join的sql语句优化

1,笛卡尔积(缩小结果集)

2,获取的列的数目少----列少偏移量小,效率明显变高(尤其笛卡尔积大的情况下)

3,GROUP BY r.ORDERNO用于左连接时不增加左边的重复记录,用户统计部分

 

 

sum()里面如果加的是列的条件--统计的是符合条件的行数之和

     里面直接是列统计的这一列的所有值纸盒

 

 

SELECT

  

TEM_ID AS temId,

(

SELECT

t.TEAM_NAME

FROM

financial_sales_team t

WHERE

t.ID = o.TEM_ID

) AS teamName,

count(1) AS count,

sum(o.STATUS = '1') AS countUnDialed,

sum(o.DIAL_RESULT = '6') AS countDialedPurpose,

sum(

o.DIAL_RESULT IS NOT NULL

AND o.DIAL_RESULT != ''

AND o.DIAL_RESULT != '6'

) AS countDialedOther,

sum(o.DIAL_RESULT = '10') AS countInvested,

SUM(o.DAIL_COUNT IS NOT NULL and o.DAIL_COUNT !='') as dailCount,

SUM(cc.CALL_LENGTH IS NOT NULL and cc.CALL_LENGTH !='') as calleth,

sum(

o.DIAL_RESULT IS NOT NULL

AND o.DIAL_RESULT != ''

AND o.DIAL_RESULT in ('6','7','8','10')

) AS avlbCustom

FROM

financial_sales_order o

LEFT JOIN (SELECT  r.ID ,r.ORDERNO from financial_sales_operator_record r where r.OPERATOR_TYPE='5' GROUP BY r.ORDERNO) rr ON o.ORDERNO = rr.ORDERNO 

LEFT JOIN (SELECT c.CALL_LENGTH,c.OPERATOR_RECORE_ID FROM financial_sales_operator_call_detail c ) cc ON rr.ID = cc.OPERATOR_RECORE_ID

GROUP BY

o.TEM_ID

 

 

用count(*)还是count(列名) || Mysql中的count()与sum()区别

 

Mysql中的count()与sum()区别

  
首先创建个表说明问题
 
 CREATE TABLE `result` (
  `name` varchar(20) default NULL,
  `subject` varchar(20) default NULL,
  `score` tinyint(4) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 
插入一些数据,
insert into result values
('张三','数学',90),
('张三','语文',50),
('张三','地理',40),
('李四','语文',55),
('赵六','语文',100),
('赵六','数学',99),
('赵六','品德',98);
 
要求:查询出2门及2门以上不及格者的平均成绩。
经常会用两种查询语句有两种:
1. select name,sum(score < 60) ,avg(score)  from result  group by name having sum(score<60) >=2;
2.select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2;
 
两种查询的结果肯定是不一样的,肯定是第一种正确的,原因是为什么,这时你就要想了,count()函数的意义和sum函数的意义
 
count()函数里面的参数是列名的的时候,那么会计算有值项的次数。 (NULL 不计入, 但是''值计入)
COUNT(*)可以计算出行数,COUNT(1)也可以计算出行数,1在这里代表一行。 count()函数里面的参数是列名的的时候,那么会计算有值项的次数。 
Count(*) 比 Count ([Column Name]) 快得多,COUNT(条件表达式),不管记录是否满足条件表达式,只要非NULL就加1;
 
Sum()函数里面的参数是列名的时候,是计算列名的值的相加,而不是有值项的总数。SUM(条件表达式),如果记录满足条件表达式就加1
 
 Sum()函数里面的参数是列名的时候,是计算列名的值的相加,而不是有值项的总数。 
当记录的列值为NULL时,COUNT(列名)和SUM(列名)都不计 这条记录。
 
 
 
归纳:实际中统计总行数是经常用到的。此时使用count(*)多处可见。
我很少看到有人使用列名作为参数:count(a)的情况。即使是这样使用,可能其初衷也是想统计行数。只是不知道!这样所造成的细微差异而错误使用了"列名"的形式。
分享到:
评论

相关推荐

    基于Oracle数据库的SQL语句优化

    传统的优化方法通常是通过手动重写SQL语句来实现。经验丰富的程序员会分析SQL语句的执行计划,凭借自身的实战经验和直觉,尝试不同的写法,比较其结果和性能,以此来寻找最优解。这种方法虽然有效,但由于其高度依赖...

    sql 语句优化详解及案例

    本文将深入探讨SQL语句优化的方法与策略,并通过具体案例来展示如何在实际场景中实施这些优化。 #### SQL语句优化的重要性 SQL语句的执行效率受到多种因素的影响,包括但不限于数据表的设计、索引的选择、查询条件...

    SQL语句大全 电子书

    书中会讲述不同类型的连接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)以及自连接的用法。 4. **子查询与嵌套查询**:通过子查询,可以实现更复杂的逻辑,例如在查询中嵌入查询来过滤数据。书中会介绍如何...

    SQL 语句大全 SQL 语句大全

    学习并熟练掌握这些SQL语句将使你能够高效地操作和管理数据库,无论是在开发、数据分析还是数据库管理领域,SQL都是不可或缺的基础技能。通过"SQL 语句大全"文档,你可以深入理解并实践这些知识点,提升自己的数据库...

    易语言常用SQL语句

    该SQL语句展示了如何使用左外联接(`LEFT OUTER JOIN`)。如果`b`表中不存在匹配项,则`b.c`, `b.d`, `b.f`的值将会是NULL。 #### 五、日程安排提前五分钟提醒 **知识点:** 在SQL中,可以使用日期函数对日期进行处理...

    SQL语句基础PPT

    6. **连接操作**: JOIN语句用于合并两个或多个表的数据,包括INNER JOIN(匹配记录)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)、FULL JOIN(全连接)。 7. **子查询**: 子查询是在一个查询语句中嵌套另一个查询...

    SQL语句基础教程。SQL语句基础教程

    7. JOIN操作:SQL提供了JOIN语句来连接两个或多个表,根据它们之间的关联字段合并数据。常见的JOIN类型有INNER JOIN(只返回匹配的行)、LEFT JOIN(返回左表所有行及右表匹配行)、RIGHT JOIN(返回右表所有行及左...

    sql语句生成器

    在实际使用时,用户通常需要配置数据库连接信息,然后选择或输入相应的表结构和查询条件,生成器会自动生成相应的SQL语句。此外,一些高级功能如代码模板、历史记录保存和导出功能也是提高生产力的重要特性。 总之...

    sql语句电子书 . .

    3. 聚合函数:学习COUNT、SUM、AVG、MAX和MIN等聚合函数,用于统计和计算数据。 4. 分页查询:掌握LIMIT和OFFSET子句来实现数据的分页显示。 三、数据操作 1. 插入数据:使用INSERT INTO语句向表中添加新记录。 2. ...

    SQL语句大全(文档).rar

    这个压缩包“SQL语句大全(文档).rar”显然包含了一份关于SQL语句的详细资源,其中“经典SQL语句大全(文档).pdf”可能是这份资料的主要内容,而“元件库(移动端以及web端).zip”可能与数据库交互的前端组件或...

    pb通过sql语句实现分组小计统计

    在本文中,我们将深入探讨如何使用SQL语句实现分组小计统计,这是一个常见的需求,尤其是在数据分析、报表生成和业务洞察领域。我们将基于提供的部分代码示例,详细解释其背后的逻辑和技术要点。 ### SQL实现分组小...

    sql语句自动生成器

    8. **代码优化**:高级的SQL自动生成器还会考虑语句的执行效率,优化SQL结构,比如使用JOIN替代子查询,减少表扫描等。 9. **版本兼容性**:为了适应不同数据库系统(如MySQL、Oracle、SQL Server、PostgreSQL等)...

    自己编写sql语句分析工具

    在IT领域,SQL(Structured Query Language)是一种...总的来说,自编的SQL语句分析工具是数据库管理和数据分析工作中的实用辅助工具,通过其强大的解析能力,可以帮助我们更好地理解和优化SQL查询,提升数据处理效率。

    SQL语句练习提高

    【SQL语句练习提高】 在SQL中,查询和操作数据是其核心功能。...以上SQL语句展示了如何处理各种数据查询,包括聚合函数、连接操作、子查询以及条件筛选。通过这些练习,我们可以更好地理解和掌握SQL的基础知识。

    ORACLE常用SQL语句大全.pdf

    Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的...本文档提供了 Oracle 中常用的 SQL 语句,涵盖了数据库、表、索引、视图等方面的操作,并且介绍了一些高级查询运算符的使用方法。

    SQL语句手册.chm

    7. **函数查询**: SQL包含许多内置函数,如聚合函数(COUNT、SUM、AVG、MAX、MIN)用于计算一组值的统计信息,字符串函数(LIKE、CONCAT、SUBSTRING)用于处理文本,以及日期/时间函数(DATE_ADD、DATEDIFF)用于...

    SQL 语句 帮助文档

    - **存储过程**:预编译的SQL语句集合,可封装复杂的逻辑并重复使用。 - **触发器**:在特定数据更改事件(如INSERT、UPDATE或DELETE)发生时自动执行的SQL代码。 5. **JETSQL40.chm文件** 这个CHM(Compiled ...

    oracle的SQL语句的一些经验总结

    3. **连接(JOIN)操作**:当需要从多个表中获取数据时,JOIN语句至关重要。INNER JOIN返回两个表中匹配的行,LEFT JOIN返回左表的所有行和右表匹配的行,RIGHT JOIN反之,FULL JOIN返回两个表的所有行。 4. **子...

    浅析SQL查询语句的优化策略.pdf

    查询优化器是数据库管理系统(DBMS)中的重要组件,负责根据数据库的统计信息和查询成本模型,从多个可能的执行计划中选择成本最低的计划来执行SQL语句。优化器工作原理大致包括以下几个步骤:语句解析、语义检查、...

    SQL语句练习题及答案

    - **SQL语句**: `SELECT 姓名, 成绩 FROM 学生 S JOIN 选课 X ON S.学号 = X.学号 WHERE 课号 = '1'` **知识点13:自连接查询** - **描述**: 在一个表中进行两次别名引用以实现自连接查询。 - **示例**: 查询那些...

Global site tag (gtag.js) - Google Analytics