深入浅出SQL教程之Group by和Having
在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) from bbc
这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。
通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合后对组记录进行筛选。
让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。
SQL实例:
一、显示每个地区的总人口数和总面积:
SELECT region, SUM(population), SUM(area)
from bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。
二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
from bbc
GROUP BY region
HAVING SUM(area)>1000000
在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
相反,HAVING子句可以让我们筛选成组后的各组数据.
相关文档:
asp.net 将Excel导入到Sql2005或2000的思路和步骤:
1、将Excel文件上传到服务器端
这个我不想详细讲了,网上一搜一大把的.
注意:(1在取服务器路径时一定要用this.Page.MapPath(".")而不要用 this.Page.Request.Applic ......
#1. 首先以管理员的身份登录到oracle系统中
cmd;
sqlplus sys/sys as sysdba;
#2.创建用户test,密码为test
create user test identified by test;
#3.创建表空间,在D盘下建立50m的表空间data_dbf
create tablespace ts_tablespace datefile 'D:\data_dbf' size 50m;
#4.为用户分配表空间
alter user test default t ......
导出.sql文件
1.将数据库transfer_server_db导出到transfSRV.sql文件中:
mysqldump -u root -p transfer_server_db > /home/eric/transfSRV.sql
2.将数据库transfer_server_db中的device_info_table导出到table.sql文件中:
mysqldump -u root -p transfer_server_db devi ......
1.选择操作的数据库
连接到服务器之后,首先需要选择要进行操作的数据库。使用PHP的MSSQL扩展库中的mssql_select_db()函数即可实现连接服务器上的数据库。该函数格式如下:
bool mssql_select_db(string database_name[,resource link_identifier)
该函数各参数意义:
a. 参数 database_name为指定的服务器上可用的数据 ......
SQL SERVER维护着一组表,存储所有对象,数据类型,约束,配置选项及SQL能访问的资源,这些表称为系统目录(系统基本表).
我们在SQL SERVER2005里有很多种方法来访问元数据.一般是使用目录视图和系统函数,信息架构视图只能包含它们全部的一部分.
最佳接口:目录视图
目录视图都位于SYS架构下,包括了动态管理对象(DMV和DM ......