zoukankan      html  css  js  c++  java
  • 在文件地理数据库中使用 SQL 进行报告和分析 (转)

    ================以下摘自ArcGIS10.1帮助===================

    文件地理数据库允许在 QueryDef 中通过 SubFields(字段列表)方法使用表达式和别名完善分析和报告。此外,通过 PostFixClause 支持 ORDER BY 和 GROUP BY。在支持 GROUP BY 时,表达式包括聚合函数,如 MIN、MAX 和 SUM。

    ALIAS

    提供给列另外一个名称以提供更易于理解的输出。

    SQL

    SELECT NAME, POP1997 - POP1990 as PopChange
    FROM counties ORDER BY NAME
    

    ArcObjects

    pQueryDef.SubFields = "NAME, POP1997 - POP1990 as PopChange"
    pQueryDef.Tables = "counties"
    pQueryDef.PostfixClause = "ORDER BY NAME"
    

    CASE

    评估条件列表并返回多个结果表达式之一。

    SQL

    SELECT name,salary,
    CASE
    	WHEN salary <= 2000 THEN 'low'
    	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
    	WHEN salary > 3000 THEN 'high'
    	END AS salary_level
    	FROM employees
    	ORDER BY salary ASC
    

    ArcObjects

    pQueryDef.SubFields = "name,salary,
    CASE
    	WHEN salary <= 2000 THEN 'low'
    	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
    	WHEN salary > 3000 THEN 'high'
    	END AS salary_level"
    	pQueryDef.Tables = " employees"
    	pQueryDef.PostfixClause = " ORDER BY salary ASC "
    

    COALESCE

    返回其参数的第一个非空字段值。

    SQL

    SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
    Contact_Phone
    FROM Contact_Info
    

    ArcObjects

    queryDef.SubFields = "Name, COALESCE(Business_Phone, Cell_Phone,
    Home_Phone) Contact_Phone"
    queryDef.Tables = "Contact_Info"
    

    Contact_Info:

    名称

    Business_Phone

    Cell_Phone

    Home_Phone

    Jeff

    531-2531

    622-7813

    565-9901

    Laura

    空值

    772-5588

    312-4088

    Peter

    空值

    空值

    594-7477

    结果:

    名称

    Contact_Phone

    Jeff

    531-2531

    Laura

    772-5588

    Peter

    594-7477

    表达式

    SQL

    SELECT SIN(sunangle)
    FROM sightings
    

    ArcObjects

    queryDef.SubFields = "SIN(sunangle)"
    queryDef.Tables = "sightings"
    

    设置函数

    运算符 描述

    AVG

    计算组中所有值的平均值。空值会被忽略。

    COUNT(*),COUNT(表达式)

    COUNT(*) 返回表中的记录数。包括空值。COUNT(表达式)返回指定表达式的值数。空值将被忽略。

    MAX

    查找组中的最大值。空值会被忽略。

    MIN

    查找组中的最小值。空值会被忽略。

    STDDEV, STDDEV_SAMP

    返回表达式的样本标准差。

    STDDEV_POP

    返回表达式的总体标准差。

    SUM

    查找组中的值。空值会被忽略。

    VAR, VAR_SAMP

    返回表达式的样本方差。

    VAR_POP

    返回表达式的总体方差。

    算述运算符

    算术运算符用于对数值进行加、减、乘、除的运算。

    运算符 描述

    *

    乘法算术运算符

    /

    除法算术运算符

    +

    加法算术运算符

    -

    减法算术运算符

    函数

    以下是文件地理数据库支持的整个函数列表。

    日期函数

    函数 描述

    CURRENT_DATE

    返回当前日期。

    EXTRACT (extract_field FROMextract_source)

    返回 extract_source 的 extract_field 部分。extract_source 参数是一个日期时间表达式。extract_field 参数可以是下列任一关键字:YEAR、MONTH、DAY、HOUR、MINUTE 或 SECOND。

    CURRENT TIME

    返回当前时间。

    CURRENT_TIMESTAMP

    返回当前时间和日期。

    字符串函数

    以 string_exp 表示的参数可以是列名、字符串文本或者另一个标量函数的结果,其基础数据类型可表示为字符型。

    以 character_exp 表示的参数是长度可变的字符型字符串。

    以 start 或 length 表示的参数可以是数值文本或者另一个标量函数的结果,其基础数据类型可表示为数值型。

    这些字符串函数以 1 为基础;即字符串的第一个字符为字符 1。

    函数 描述

    CHAR_LENGTH(string_exp)

    返回字符串表达式的字符长度。

    CONCAT(string_exp1, string_exp2)

    返回 string_exp2 与 string_exp1 连接后得到的字符串。

    LOWER(string_exp)

    返回一个与 string_exp 相等的字符串,其中所有大写字符均会转换为小写字符。

    POSITION(character_expIN character_exp)

    返回第一个字符表达式在第二个字符表达式中的位置。结果是一个确切的数值,采用预先定义的精度且小数位数为零。

    SUBSTRING (string_expFROM start FOR length)

    返回一个从 string_exp 衍生而来的字符串,其起始字符位置由 start 指定,字符数由 length 指定。

    TRIM(BOTH | LEADING | TRAILING trim_characterFROM string_exp)

    返回字符串的开头、末尾或两端移除trim_character 后所得的 string_exp

    UPPER(string_exp)

    返回一个与 string_exp 相等的字符串,其中所有小写字符均会转换为大写字符。

    数值函数

    所有数值函数均返回数值型值。

    以 numeric_expfloat_exp 或 integer_exp 表示的参数可以是列名、另一个标量函数的结果或数值文本,其基础数据类型可表示为数值型。

    函数 描述

    ABS(numeric_exp)

    返回 numeric_exp 的绝对值。

    ACOS(float_exp)

    返回作为角度的 float_exp 的反余弦值,用弧度表示。

    ASIN(float_exp)

    返回作为角度的 float_exp 的反正弦值,用弧度表示。

    ATAN(float_exp)

    返回作为角度的 float_exp 的反正切值,用弧度表示。

    CEILING(numeric_exp)

    返回大于或等于 numeric_exp 的最小整数。

    COS(float_exp)

    返回 float_exp 的余弦值,其中 float_exp是以弧度表示的角度。

    FLOOR(numeric_exp)

    返回小于或等于 numeric_exp 的最大整数。

    LOG(float_exp)

    返回 float_exp 的自然对数。

    LOG10(float_exp)

    返回 float_exp 的以 10 为底的对数。

    MOD(integer_exp1, integer_exp2)

    返回 integer_exp1 除以 integer_exp2 所得的余数。

    POWER(numeric_exp, integer_exp)

    返回 numeric_exp 的 integer_exp 次幂的值。

    ROUND(numeric_exp, integer_exp)

    返回四舍五入至小数点右侧第 integer_exp位的 numeric_exp。如果 integer_exp 为负数,则 numeric_exp 将被四舍五入至小数点左侧第 |integer_exp| 位。

    SIGN(numeric_exp)

    返回 numeric_exp 正负号的标志。如果numeric_exp 小于零,则返回 -1。如果numeric_exp 等于零,则返回 0。如果numeric_exp 大于零,则返回 1。

    SIN(float_exp)

    返回 float_exp 的正弦值,其中 float_exp是以弧度表示的角度。

    TAN(float_exp)

    返回 float_exp 的正切值,其中 float_exp是以弧度表示的角度。

    TRUNCATE(numeric_exp, integer_exp)

    返回截断至小数点右侧第 integer_exp 位的numeric_exp。如果 integer_exp 为负数,则 numeric_exp 将被截断至小数点左侧第 |integer_exp| 位。

    GROUP BY

    用于按一或多列收集多条记录的数据并对结果进行分组

    SQL

    SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
    FROM counties
    GROUP BY STATE_NAME ORDER BY STATE_NAME
    

    ArcObjects

    pQueryDef.SubFields = "STATE_NAME, SUM(POP1990) as
    TotalPopulation"
    pQueryDef.Tables = "counties"
    pQueryDef.PostfixClause = "GROUP BY STATE_NAME ORDER BY
    STATE_NAME"
    

    HAVING

    GROUP BY 的子句。

    SQL

    SELECT department, MAX(salary) as Highest_salary
    FROM employees
    GROUP BY department HAVING MAX(salary) < 50000
    

    ArcObjects

    queryDef.SubFields = "department, MAX(salary) as Highest_salary"
    queryDef.Tables = "employees"
    pQueryDef.PostfixClause = "GROUP BY department HAVING MAX(salary)
    < 50000"
    

    JOINS

    合并两个或多个表的记录。

    Cross Join

    SQL

    SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
    FROM Table1 CROSS JOIN Table2
    

    ArcObjects

    queryDef.SubFields = "Table1.name, Table1.Address, Table2.name,
    Table2.Salary"
    queryDef.Tables = "Table1 CROSS JOIN Table2"
    

    Inner Join

    SQL

    SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
    INNER JOIN Table2 ON Table1.C1 = Table2.C3
    

    ArcObjects

    queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
    Table2.C4"
    queryDef.Tables = "Table1 INNER JOIN Table2 ON Table1.C1 =
    Table2.C3"
    

    Left Outer Join

    SQL

    SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
    LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
    

    ArcObjects

    queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
    Table2.C4"
    queryDef.Tables = "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 =
    Table2.C3"
    

    Right Outer Join

    SQL

    SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
    Table2.C3
    

    ArcObjects

    queryDef.SubFields = "*"
    queryDef.Tables = "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
    Table2.C3"
    

    NULLIF

    如果所提供的两个参数相等,则 NULLIF 返回空值;否则,返回第一个参数的值。

    SQL

    SELECT Location, NULLIF(Sales, Forecast) as Results FROM
    StoreSales
    

    ArcObjects

    queryDef.SubFields = " Location, NULLIF(Sales, Forecast) as
    Results"
    queryDef.Tables = "StoreSales"
    

    StoreSales:

    位置 销售 预测

    雷德兰兹

    39000

    55000

    Palm Springs

    60000

    61000

    Riverside

    40000

    40000

    结果:

    位置 结果

    雷德兰兹

    39000

    Palm Springs

    60000

    Riverside

    空值

    ORDER BY

    指定排序顺序。顺序可以是升序 (ASC) 或降序 (DESC),并将两者加以整理。排序规则类型包括 BINARY(BIN)、CASESENSITIVE(CASE) 和 NOCASESENSITIVE(NOCASE)。二进制排序规则区分大小写和重音。区分大小写排序规则区分大写和小写字母。不区分大小写排序规则不区分大写和小写字母。

    SQL

    SELECT STATE_NAME, POP1990
    FROM counties ORDER BY STATE_NAME
    

    ArcObjects

    pQueryDef.SubFields = "STATE_NAME, POP1990"
    pQueryDef.Tables = "counties"
    pQueryDef.PostfixClause = "ORDER BY STATE_NAME"
    

    SQL

    SELECT STATE_NAME, POP1990
    FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC
    

    ArcObjects

    pQueryDef.SubFields = "STATE_NAME, POP1990"
    pQueryDef.Tables = "counties"
    pQueryDef.PostfixClause = "ORDER BY STATE_NAME COLLATE BINARY
    ASC"
  • 相关阅读:
    把影响集中到一个点
    How to avoid Over-fitting using Regularization?
    适定性问题
    Numerical Differentiation 数值微分
    What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Generally a good method to avoid this is to randomly shuffle the data prior to each epoch of training.
    What is the difference between iterations and epochs in Convolution neural networks?
    Every norm is a convex function
    Moore-Penrose Matrix Inverse 摩尔-彭若斯广义逆 埃尔米特矩阵 Hermitian matrix
    perl 类里的函数调用其他类的函数
  • 原文地址:https://www.cnblogs.com/gisoracle/p/3155099.html
Copyright © 2011-2022 走看看