当前位置: 首页 > news >正文

网站怎么做排名呢怎么建设

网站怎么做排名呢,怎么建设,wordpress宾馆,免费个人网站2018聚合函数介绍 聚合函数#xff1a; 对一组数据进行汇总的函数#xff0c;输入的是一组数据的集合#xff0c;输出的是单个值。 聚合函数类型#xff1a;AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段#xff08;或变量#xff09; SELECT AVG(…聚合函数介绍 聚合函数 对一组数据进行汇总的函数输入的是一组数据的集合输出的是单个值。 聚合函数类型AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段或变量 SELECT AVG(salary),SUM(salary),AVG(salary) * 107 FROM employees;MAX / MIN 适用于数值类型、字符串类型、日期时间类型的字段或变量 SELECT MAX(salary),MIN(salary) FROM employees;SELECT MAX(last_name),MIN(last_name),MAX(hire_date),MIN(hire_date) FROM employees;COUNT 作用计算指定字段在查询结构中出现的个数不包含NULL值的 SELECT COUNT(employee_id),COUNT(salary),COUNT(2 * salary),COUNT(1),COUNT(2),COUNT(*) FROM employees ;计算表中有多少条记录 方式1COUNT(*)返回表中记录总数适用于任意数据类型。 方式2COUNT(1) 方式3COUNT(expr) : 不一定对返回expr不为空的记录总数。 count(*)会统计值为 NULL 的行而 count(列名)不会统计此列为 NULL 值的行。 不要使用 count(列名)来替代 count(*) count(*) 是 SQL92 定义的标准统计行数的语法跟数据库无关跟 NULL 和非 NULL 无关。 Innodb引擎的表 用count(*),count(1)直接读行数复杂度是O(n)。 如何需要统计表中的记录数使用COUNT(*)、COUNT(1)、COUNT(具体字段) 哪个效率更高呢 如果使用的是MyISAM 存储引擎则三者效率相同都是O(1) 如果使用的是InnoDB 存储引擎则三者效率COUNT(*) COUNT(1) COUNT(字段) SELECT COUNT(commission_pct) FROM employees;SELECT commission_pct FROM employees WHERE commission_pct IS NOT NULL;公式AVG SUM / COUNT SELECT AVG(salary),SUM(salary)/COUNT(salary), AVG(commission_pct),SUM(commission_pct)/COUNT(commission_pct), SUM(commission_pct) / 107 FROM employees;GROUP BY 的使用 可以使用GROUP BY子句将表中的数据分成若干组。 SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column];WHERE一定放在FROM后面。 在SELECT列表中所有未包含在组函数中的列都应该包含在 GROUP BY子句中。 #需求查询各个部门的平均工资最高工资 SELECT department_id,AVG(salary),SUM(salary) FROM employees GROUP BY department_id#需求查询各个job_id的平均工资 SELECT job_id,AVG(salary) FROM employees GROUP BY job_id;#需求查询各个department_id,job_id的平均工资 #方式1 SELECT department_id,job_id,AVG(salary) FROM employees GROUP BY department_id,job_id; #方式2 SELECT job_id,department_id,AVG(salary) FROM employees GROUP BY job_id,department_id;结论1SELECT中出现的非组函数的字段必须声明在GROUP BY 中。 反之GROUP BY中声明的字段可以不出现在SELECT中。 结论2GROUP BY 声明在FROM后面、WHERE后面ORDER BY 前面、LIMIT前面 结论3MySQL中GROUP BY中使用WITH ROLLUP 使用 WITH ROLLUP 关键字之后在所有查询出的分组记录之后增加一条记录该记录计算查询出的所有记录的总和即统计记录数量。 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id WITH ROLLUP;最后新加的一条NULL为总体平均。 SELECT department_id,AVG(salary) avg_sal FROM employees GROUP BY department_id ORDER BY avg_sal ASC;当使用ROLLUP时不能同时使用ORDER BY子句进行结果排序即ROLLUP和ORDER BY是互相排斥的。 HAVING 基本使用 作用用来过滤数据的 1.行已经被分组。 2.使用了聚合函数。 3.满足HAVING 子句中条件的分组将被显示。 4.HAVING 不能单独使用必须要跟 GROUP BY 一起使用。 SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)10000 ;非法使用聚合函数 不能在 WHERE 子句中使用聚合函数。 要求1如果过滤条件中使用了聚合函数则必须使用HAVING来替换WHERE。否则报错。 要求2HAVING 必须声明在 GROUP BY 的后面。 WHERE 和 HAVING的对比 区别1 WHERE 可以直接使用表中的字段作为筛选条件但不能使用分组中的计算函数作为筛选条件HAVING 必须要与 GROUP BY 配合使用可以把分组计算的函数和分组字段作为筛选条件。 区别2 如果需要通过连接从关联表中获取需要的数据WHERE 是先筛选后连接而 HAVING 是先连接后筛选。 WHERE 先筛选数据再关联执行效率高不能使用分组中的计算函数进行筛选 HAVING 可以使用分组中的计算函数在最后的结果集中进行筛选执行效率较低。 开发中的选择 可以在一个查询里面同时使用 WHERE 和 HAVING。包含分组统计函数的条件用 HAVING普通条件用 WHERE。这样我们就既利用了 WHERE 条件的高效快速又发挥了 HAVING 可以使用包含分组统计函数的查询条件的优点。当数据量特别大的时候运行效率会有很大的差别。 SELECT的执行过程 SELECT 语句的完整结构 #方式1sql92语法 SELECT ...,....,... FROM ...,...,.... WHERE 多表的连接条件 AND 不包含组函数的过滤条件 GROUP BY ...,... HAVING 包含组函数的过滤条件 ORDER BY ... ASC/DESC LIMIT ...,...#方式2sql99语法 SELECT ...,....,... FROM ... JOIN ... ON 多表的连接条件 JOIN ... ON ... WHERE 不包含组函数的过滤条件 AND/OR 不包含组函数的过滤条件 GROUP BY ...,... HAVING 包含组函数的过滤条件 ORDER BY ... ASC/DESC LIMIT ...,...#其中 #1from从哪些表中筛选 #2on关联多表查询时去除笛卡尔积 #3where从表中筛选的条件 #4group by分组依据 #5having在统计结果中再次筛选 #6order by排序 #7limit分页SQL 执行过程 SELECT 查询时的两个顺序 关键字的顺序是不能颠倒的SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT... SELECT 语句的执行顺序在 MySQL 和 Oracle 中SELECT 执行顺序基本相同FROM - WHERE - GROUP BY - HAVING - SELECT 的字段 - DISTINCT - ORDER BY - LIMIT 在 SELECT 语句执行这些步骤的时候每个步骤都会产生一个 虚拟表 然后将这个虚拟表传入下一个步骤中作为输入。需要注意的是这些步骤隐含在 SQL 的执行过程中对于我们来说不可见。 SQL 的执行原理 SELECT 是先执行 FROM 这一步的。在这个阶段如果是多张表联查还会经历下面的几个步骤 1.首先先通过 CROSS JOIN 求笛卡尔积相当于得到虚拟表 vtvirtual table1-1 2.通过 ON 进行筛选在虚拟表 vt1-1 的基础上进行筛选得到虚拟表 vt1-2 3.添加外部行。如果我们使用的是左连接、右链接或者全连接就会涉及到外部行也就是在虚拟表 vt1-2 的基础上增加外部行得到虚拟表 vt1-3。 如果是两张以上的表还会重复上面的步骤直到所有表都被处理完为止。 数据库学习视频 【MySQL数据库入门到大牛mysql安装到优化百科全书级全网天花板】
http://wiki.neutronadmin.com/news/18564/

相关文章:

  • 本地网站建设信息大全购物网站功能模块设计
  • 深圳一百讯网站建设网站是公司域名是个人可以
  • dede网站地图html文件网站做流量的论坛贴吧
  • 长沙做一个网站多少钱wordpress信息搜集
  • 化妆品网站建设思路wordpress前端框架
  • 泰州网站建设多少钱qq空间秒赞秒评网站推广
  • 个人做网站下载网上图可以吗400平别墅装修费用
  • 论坛seo网站长沙网站推广平台
  • 域名注册的网站有哪些建设厅官方网站北京
  • 影视 网站建设 新媒体寒亭区建设局网站
  • 信阳建设网站哪家好文案转行做网站编辑
  • 联盟文明网站建设有新突破优秀设计网站大全
  • 可拖拽编程网站开发郑州发布
  • 小企业网站建设在哪里创建网站投资多少钱
  • 做网站专题的软件网站营销外包
  • 做视频网站怎么挣钱吗商标可以做网站吗
  • 滑县网站建设服务军民融合网站建设
  • 驻马店做网站公司wordpress seo模块
  • 宜昌最权威网站建设公司网络营销与直播电商专业就业方向
  • 网站建设对网络营销的影响万网网站设计
  • 在软件定义网络架构中管理员深圳网站建设专业乐云seo
  • 做美食推广的网站有哪些长沙营销型网站建设费用
  • 福州做企业网站wordpress哪个主题好
  • php网站架设教程网片钢筋生产厂家
  • 应聘网站开发题目室内设计软件自学
  • 网站建设验收wordpress 获取分类文章列表
  • 深圳手机网站建设牛商网做公司网站的公司
  • 做电子手抄报的网站伊春网络推广
  • 王晴儿网站建设方案盐山做网站价格
  • 上海做网站的深圳龙华新区