• 在文件地理数据库中使用 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"
  • 相关阅读:
    SQL入门学习4-复杂查询
    SQL入门学习3-数据更新
    SQL入门学习2-聚合与排序
    SQL入门学习1-查询基础
    SQL入门学习0-数据库与SQL
    Exp9 20155218 Web安全基础实践
    20155218《网络对抗》Exp8 Web基础
    # 20155218 徐志瀚 EXP7 网络欺诈
    Exp6 20155218 信息搜集与漏洞扫描
    20155218《网络对抗》MSF基础应用
  • 原文地址:https://www.cnblogs.com/gisoracle/p/3155099.html
Copyright © 2020-2023  润新知