📄 mapinfo教学1.doc
字号:
那个销售代表接受的订单数量
那个代表登录的订单平均金额
那个代表填写的订单的总金额
如下的SQL Select查询产生所要求的结果:
Select Columns:Sales_Rep,count(*),average(Amount),sum(Average)
From tables: Order
Group By Columns:Seles_Rep(这意味着按销售代表统计)
注意:Group By Columns区和Select Columns区的三个集合操作符。Mapinfo要做的是:
1.找出对应某一个销售代表的全部行
2.计算行数:Count(*)
3.计算这个销售代表的定单的平均金额:Avg(Amount)
4.计算这个销售代表的定单的总金额:Sum(Amount)
MapInfo对每一个销售代表都要做这些工作,然后产生一个对每一个代表有一个单独行的结果表。
集合操作符(Count,Avg和Sum)小计有相同销售代表值的全部行的数据值。
考虑这样一个SQL Select:
Select columns: Customer,Count(*),Avg(Amount),Sum(Amount)
From tables: Orders
Group By Columns: Customer
这是一个在体质上与前一个相同的查询,除了我们现在是按顾客分组而不是按销售代表分组外,这个SQL Select找出订单Count,Average和Sum是针对各个顾客的而不是销售代表的。
下面的例子说明按多列分组:多重分组
Select olumns:Sales_Rep,Customer,Count(*),Avg(amount),Sum(Amount)
From tables: Orders
Group By Columns:Sales_Rep,Customer
在Group By Columns区,我们指定了两列名,在这种情况下,MapInfo首先按销售代表组合行,然后再按顾客组合。这个查询的结果表对应于每一个不同的顾客棗销售代表组合都有一个行。
当某个顾客通过两个或更多的销售代表订货时,那个顾客与第一个销售代表做的生意都有一个行来总结。全部行首先是按销售代表分组,然后,对于各个销售代表,又按顾客分组。
集合函数,MapInfo有下列集合函数:
Count(*):计算一个组内的记录个数,它仅用*作为其参数是因为它适用于整个 记录,而不是记录中的某个特定字段。
Sum(表达式):计算一个组全部记录表达式值的总和
Avg(表达式):计算一个组全部记录表达式值的平均值
Max(表达式):找出一个组全部记录表达式值中的最大值
Min(表达式):找出一个组全部记录表达式值中的最大值
以上所述的表达式,最简单的情况是一个字段名(列名)。
关于From tables
这个区告诉MapInfo要查询那些表,你必须在这个区最少输入一个表名。如果你要MapInfo查询两个或更多的表,就要输入用逗号分隔的一系列表名。
如果你在这个区输入了两个或两个以上的表名,那么,你还必须在Where Condition区指定表达式来告诉MapInfo如何连系这些表。
如果你输入了两个表名,MapInfo自动计算一个适当的Where Condition表达式。但是如果你用了三个或更多的表名,你必须手工修改这个表达式。当你按多表联接时,所有的表必须是基础表。你不能把结果表(例如Qurey5)用于多表SQL Selec。
关于Where Condition区
这个区有不同的任务,取决于你的查询性质。当你查询一个单表时,该区是可选的(即不填也可)。如果你查询涉及到连接两个或多个表,你必须指定一个Where Condition表达式,那个表达式必须表明MapInfo应该如何联接这两个表。
如果你愿意,你可以在该区输入过滤标准。输入过滤标准的方法是打入一个判断真假的逻辑表达式。例如,当你查询World表时,如果你只选择人口大于5百万的行,就要指定如下的Where Condition子句:
Where Condition:Population>5000000
这个区的数字中间不要打逗号。
关于Group by Columns区
这个区允许你小计你的结果表。如果你输入一个列名(或被逗号分隔的一串列名)到该区,MapInfo就小计你的查询结果,并且只给你显示出小计结果表,而不显示你的表的每个行。
计算小计是一个两步曲:
1.输入一个(或一组)列名到该区
2.输入同样的列名和集合运算器(诸如Sum或Count)到Select Columns区。Group by Columns区是可选的。如果你保留为空(默认的),MapInfo将不计算小计。
关于Order by Columns区
这个区允许你对你的结果表进行排序。如果你输入一个(或被逗号分隔的一组)列名到该区,MapInfo就以你输入的列作为关键字对你结果表的行进行排序。默认是升序,A在B之上,小数在大数之上。降序可在列名后跟一个desc字。例如:
Order by Columns:Population desc
该区是可选的,如果空着,结果表将不排序。
关于Into table Named区
这个区允许你命名结果表。默认的结果表名是Selection。如果你要指定一个另外的名字,就把它打入该区。你输入的表名不应该是一个打开的表。如果你频繁使用SQL Select,并且如果你用selection作为你的结果表名,你会以得到许多左上重叠的结果表(例如Query1,Query2,Query3等)告终。这些Queryn表不会造成任何伤害;然而,有的人就是不喜欢这大量打开的表。如果你要避免这大量打开的Queryn表,那你在该区输入一个另外的表名就行了。例如你输入表名Qresults:
Into Table Named:Qresults
然后再进行的各个SQL操作就只用Qresults作为结果表名。这个方法,你只能得到一个结果表(Qresults),不管你进行了多少次查询。
关于Browse Results
如果你标证了Browse Results检查框,MapInfo自动以一个Browser窗口显示查询结果。
关于Aggregates,Function,Operator等的下拉列表(略)
SQL Select的目的是什么?
它是一个多目的的查询工具。用SQL选择,你可以完成下列任务之一或全部:
过滤你的数据,以便你只看到你感兴趣的行和列
执行关系连结,把两个或多个表组合成一个结果表
创建关系连结,(根据已有列的内容计算出新值的列)
按数据值或(和)字母顺序排序你的数据
小计你的数据,以便你只看到一个小计表,而不是整表
Select 的目的
Select允许你查询你的数据库,根据一定的准则从一个表中选择记录和对象,并创建一个你以平面图、表格浏览器或曲线图方式来观看的结果表。
Select对话框允许你指定查询准则
对话框各栏的填写
Select records from Table选择你要操作的表
That Satisfy在此打入你的查询表达式,或者用鼠标点Assist 钮使显示表达式对话框,这个对话框将帮助你构成你的查询表达式。
Store results in table(optional)
这个选项允许你命名保存查询结果的临时表。“Seltction”是默认值。如果你选择了“Selection”,MapInfo就命名这个表为Query1,Query2等。
Sort results by Column(optional)
当你要查询结果按某个列的值排序时,选择这里。默认的是查询不被排序。你可以通过使用Select并指定一个排序依据(但不能任何表达式)把一个表排列成某个需要的顺序。MapInfo选择表中所有的记录并根据指定列中的值对它们进行顺序。
Assist
进入你可以用以构成查询表达式的表达式对话框。
Browse results
这个盒默认是标记的。当你需要你的查询结果表时,保留它被标记。否则清除它。该表的命名是根据输入到Store results in Table的标记。
OK执行查询
用Select搞查询
MapInfo有两个通过查来选择对象的命令:Select和SQL Select。Select是比较简单的,而SQL是功能更强的。
要作一个查询:
1.选择Query>Select,Select对话框显示。
2.点Select records from table下拉列表,选择要从中选择记录的表名。
3.在That Satisfy区内打入你的查询表达式,或者点Assist钮显示帮助你写表达式的表达式对话框。
4.在Store Results in Table区内,为贮存你的查询结果的临时表打入一个名字,或者选Selection(默认的表名)。如果选这个默认的,MapInfo就把这个表命名为Query1,Query2等。
要按某个列的值对查询结果排序(可选的)
5.点击Sort results by Columns下位列表并选择含有你要用以排序的列。
6.点击OK
如果Browse Results检查盒标记,一个有你的查询结果的Browser窗口就显示出来。
你可以用这个Select命令加亮一个Map或一个Table中符合一定准则的对象,并且创建一个你能浏览,成图或作曲线图的象任何别的Table一样的结果表。
当你正与一个Browse Window打交道时,满足查询准则的记录都被加亮。
当你正与一个Map打交道时,所选对象的图形对象都被加亮。
当你同时既与一个map窗口又与一个Browse窗口交道时,这些对象和记录都是加亮的。
在所有情况下,都自动建立起一个叫做Selection的工作表。这个表包括着查询结果。你可以使用这个表作平面图或曲线图,像任何其它表一样。
当你用Select或SQL Select作查询时,从你的源表生成了临时表。显示在窗口中时,这些表被命名为Query1,Query2等。关闭这些表就清除了它们,但不会影响你的源表。但是,如果你关闭了你的源表,所有相关的查询表将被关闭并被清除。
为了保存一个查询表的内容,要用:
File>Save Copy AS
然后你可以关闭这个查询表,有效地删除它。以后要打开它就用通过Save Copy As建立表时的名字。
你可以把Update Column用于一个SQL Select多表联接的结果表,前提是这个SQL Select没有使用Group By子句。
要更新带有另一表的信息的一个表中列,应该:
用SQL Select连接这两个表。
把Update Column用于其Selection表,更新将会自动影响到相应的基础表。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -