什么是数据排序?
ORDER BY 子句按指定的顺序对数据排序( ordering data )。它要求一个列名字列表或非负整数列表来指定列的位置。分别用 ASC 代表升序, DESC 代表降序,默认为 ASC 。 限制返回行的数目不使用 WHERE 子句而限制结果中的行数是可能的。“ TOP ”子句能按指定数目或百分值来限制行数。数据分组和计算聚合函数 。 聚合( aggregate )函数计算表中数据的总和。 SQL Server 提供以下的聚合函数: · AVG 这个函数计算平均值。 语法如下: AVG ([ALL | DISTINCT] expression) 关键字 DISTINC...全部
ORDER BY 子句按指定的顺序对数据排序( ordering data )。它要求一个列名字列表或非负整数列表来指定列的位置。分别用 ASC 代表升序, DESC 代表降序,默认为 ASC 。
限制返回行的数目不使用 WHERE 子句而限制结果中的行数是可能的。“ TOP ”子句能按指定数目或百分值来限制行数。数据分组和计算聚合函数 。 聚合( aggregate )函数计算表中数据的总和。
SQL Server 提供以下的聚合函数: · AVG 这个函数计算平均值。 语法如下: AVG ([ALL | DISTINCT] expression) 关键字 DISTINCT 只用来计算不同值的平均值,如果有许多重复值,这些值只计算一次,默认为 ALL 。
Expression 可以是涉及一列或多列的算术表达式。 · MIN 这个函数查找所提供表达式中的最小值。 语法如下: MIN (expression) · MAX 此函数的功能是在提供的表达式中查找最大值。
语法如下: MAX (expression) 注意:如果地字符串类型使用 MIN 和 MAX ,则输出依赖于为 SQL Server 定义的顺序。 MIN 和 MAX 不能在位上使用。 · SUM SUM 计算所有数据值的和。
语法如下: SUM ([ALL | DISTINCT] expression) 注意: SUM 和 AVG 只能用于数值数据类型。 · COUNT 计算表达式值的数目。 语法如下:COUNT ([ALL | DISTINCT] expression) COUNT 有另一种用法,它可以返回被选择的行数。
如: SELECT NumRows = COUNT (*) FROM titles 聚合函数忽略所有空值,但 COUNT(*) 除外。尽管所有聚合函数的计算基于无空值的情况,然而 COUNT (*) 计算所有的行(包括有空值的行)。
1 .GROUP BY 子句 GROUP BY 子句在被定义的数据的基础上建立比较小的组,并且对每一个组进行聚合函数计算。换句话说,它产生每一组的总体信息。 GROUP BY 可以把多于一列当成组合列( Grouping Columns )。
它总结组合列中不重复值的信息。 使用了 GROUP BY 子句的选择列表中只能包含以下项: · 常量值。 · 组合列。 · 表达式。每个表达式为每组返回一个值(如聚合函数)。如果一列除了在组合列中外,还在选择列表中,则它有多个值给组合列的每一个不重复值,这种结构类型是不允许的。
2 .GROUP BY 和 HAVING HAVING 子句用来向使用 GROUP BY 子句的查询中增加数据过滤准则。 HAVING 的用法和 SELECT 中的 WHERE 子句一样。
在一个包含 GROUP BY 子句的查询中使用 WHERE 子句是可以的。 HAVING 和 WHERE 有相同的语法。 HAVING 和 WHERE 的不同这处是: · 在 WHERE 子句中,在分组进行以前,去除不满足条件的行,在 HAVING 子句中,在分组之后条件被应用。
· HAVING 可在条件中包含聚合函数,但 WHERE 不能。注意: GROUP BY 和 HAVING 子句不能使用文本或图像数据类型。 3 .COMPUTE BY 子句 COMPUTE BY 子句可以得到详细或总的记录。
它把数据分成较小的组,然后为每组建立详细记录结果数据集(象 SELECT ),它也可为每组产生总的记录(象 GROUP BY )。在 COMPUT BY 中,定义 BY 子句不是必要的。如果没有定义 BY 子句,则认为整个表为一个组,并且只有两个结果数据集产生,一个拥有所有详细记录,另一个只有一行,它拥有总记录。
注意:当在 COMPUTE 中使用 BY 时,则要求在所有组合列中包含 ORDER BY 。 Cube 和 Rollup 操作 CUBE 和 ROLLUP 操作可比简单的 GROUP BY 产生更多的聚合值。
在产生交叉标签报告( cross tab reports )时,这些操作非常有用。如果查询使用 n 个组合列,则有 2n 个计算聚合的组合。从多个表中访问数据 我们已讨论了如何访问单个表中的数据。
从多个表中访问数据也是可能的。从多个表中访问数据称为连接表( joining a table )。 1 、CROSS JOIN (笛卡尔积) CROSS JOIN 是简单地、不加任何约束条件地把表组合。
CROSS JOIN 后结果的行数是连接前两个表行数的乘积。如果对两个分别有好几千行的表进行连接,则结果是不可想象的。 2 、INNER JOININNER JOIN 是组合两个表最常用的方法。
INNER JOIN 是基于一个判别式进行的,这个判别式称为连接条件。连接条件和 WHERE 子句一起定义。连接条件由来自两个表中的列组成,并使用一个比较条件来对列的值进行比较。通过比较的值包含在结果数据集中,以下是 Inner JOIN 的语法:语法 1 :( ANSI 92 ) Select FROM INNER JOIN ON 。
= 。 语法 2 : Select FROM , WHERE 。 = 。 在 FROM 子句中可为表定义别名,并在任何地方都可用别名代替真名。注意:如果作为连接条件的列中有空值,则空值不能和任何值匹配,因此结果中不包含有空值的行。
3 、Left Outer JOIN 在 Inner JOIN 中,只有在两个表中匹配的行才能在结果数据集中。但在 Left Outer JOIN 中,所有左边表中的行都出现在结果数据集中,如果左边表中的某一行在右边表中没有匹配的行,则以空值取代右边表中的值和它连接。
语法如下:( ANSI 92 ) Select FROM LEFT OUTER JOIN ON 。 = 。 4 、Right Outer JOIN Right Out JOIN 和 Left Outer JOIN 相似,不同的是把右边的表作为外部表(所有右边表中的行包含在结果数据集中)。
语法如下: Select FROM RIGHT OUTER JOIN ON 。 = 。 5 、Full Outer JOIN 在 Full Outer JOIN 中,所有两个表中的行都包含在结果数据集中。
语法如下: Select FROM FULL OUTER JOIN ON 。 = 。 Case 语句 当对不同条件产生不同的结果值时,可使用 Case 语句。 Case 语句计算所有定义的条件,并按条件是否为真而返回结果。
语法如下: CASE [] WHEN THEN [ELSE ] END Input_expression 是任何有效的 SQL Server 表达式或布尔表达式。 When_expression 是任何有效的 SQL Server 表达式或布尔表达式。
这个表达式和 Input_expression 比较,如果 Input_expression 没有定义,则 When_expression 应该是一个布尔表达式。 Result_expression 是任何有效的 SQL Server 表达式。
如果 When_expression 和 Input_expression 的比较返回 TRUE (如果定义了 Input_expression )或 When_expression 的值为 TRUE ,则计算表达式,并返回其结果。
否则计算 Else_expression 中的表达式,并返回其结果。 例如: SELECT au_fname,au_lname, State=CASE state WHEN ‘ CA ’ THEN ‘ California ’ WHEN ‘ KS ’ THEN ‘ Kansas ’ END FROM authors UNION UNION 语句把两个或多个查询的结果组合成一个结果集。
语法如下:SELECT FROM WHERE UNION [ALL] SELECTFROM WHERE ALL 关键字指定重复的数据也将包含在最终结果数据集中。如果需要,一个查询中可以有许多 UNION 语句。
所有 Select_list 应该有相同数目的列,且是相同或兼容的数据类型。Go 命令 Go 命令用来标志一个查询批处理( query batch )的结束。查询批处理是 TSQL 语句的集合,这些语句集合在一起执行。
Go 与 Osql 或 SQL Server Query Analyzer 一起使用。
以上是我对于这个问题的解答,希望能够帮到大家。收起