SQL语法 本文主要介绍SQL统计语法。 SQL是用于访问和处理数据库的标准计算机语言,云日志服务SQL提供了查询日志单元中结构化数据的语句。 在自定义语句模式下,您可以编写SQL语句进行统计分析,云日志服务将根据SQL语句返回统计分析结果。具体操作步骤请参考SQL统计分析概述。 语法格式 plaintext SELECT [ ALL DISTINCT ] { exprs } FROM { } [ WHERE wherecondition ] [ GROUP BY [ collistname ] [ HAVING expr ] [ ORDER BY expr [ ASC DESC ], expr [ ASC DESC ], ... ] [ LIMIT limit ] 语句说明 语句 说明 示例 SELECT 从表中选取数据,默认从当前日志单元中获取符合检索条件的数据内容。可省略后续的FROM log。 SELECT visitCount FROM log DISTINCT 返回去重后的结果。 SELECT DISTINCT visitCount AS 为列名称指定别名。 SELECT visitCount AS pv FROM 表示当前查询数据的源数据集, 可以是当前日志单元的结构化数据,该情况下FROM后只能接log,也可以是当前日志单元结构化数据的一个子集。不加FROM的时候默认从当前日志单元结构化数据查询,如果查询的数据源是一个子集,您需要编写子查询语句。 SELECT visitCount SELECT visitCount FROM log WHERE 指定查询的过滤条件,支持算术运算符、关系运算符和逻辑运算符。具体过滤条件可填在wherecondition处。 SELECT visitCount WHERE visitCount > 0 GROUP BY 指定作为分组依据的结构化字段,支持根据单字段或多字段分组。具体的结构化字段列表可填入collistname处。 SELECT host, count() AS pv WHERE visitCount > 0 GROUP BY host HAVING 只能与GROUP BY配合使用。指定用于过滤GROUP BY结果的结构化字段。 SELECT host, count() AS pv GROUP BY host HAVING pv > 10 ORDER BY 后面的字段必须是用于GROUP BY分组的字段,对GROUP BY的查询结果进行排序,用于排序的可以是任意一个结构化字段。 SELECT host, count() AS pv GROUP BY host ORDER BY pv ASC/DESC ASC为升序,DESC为降序,默认为ASC。 SELECT host, count() AS pv GROUP BY host ORDER BY pv DESC LIMIT 对查询结果进行限制,用于限制返回的结构化日志条数。一次查询最多返回20000条结构化日志。说明:如果不使用LIMIT语句,默认返回查询结果中最新的100条数据。 SELECT host LIMIT 100 注意 1. SQL 语句对大小写不敏感,如SELECT 等效于 select。 2. 使用SELECT从日志单元中获取数据时,默认最大获取100行数据,如需获取更多数据请使用LIMIT语法指定需要获取的行数,最多可获取2万行。 3. 字符串必须使用单引号''包裹,无符号包裹或被双引号""包裹的字符表示字段或列名。例如'status'表示字符串 status,status或"status"表示日志字段 status。字符串内本身包含单引号'时,需使用''(两个单引号)代表单引号本身。 4. SELECT中字段名称需符合列名规范,不符合该规范时,需使用双引号""包裹。 5. 每次只能执行一个sql语句。 6. 统计分析语句中默认不需要填写FROM子句和WHERE子句,默认统计当前日志单元中的数据。 7. 不需要在统计分析语句末尾加分号表示结束。