云服务器内容精选

  • 除法表达式 MySQL中,除法表达式中,当除数为0时,会返回null值。DWS会报错,因此对除法表达式进行转换,增加一个if条件表达式。 输入示例 1 2 select sum(c1) / c2 as result from table_t1; select sum(c1) / count (c3/c4) as result from table_t1; 输出示例 1 2 SELECT (if (c2 = 0, null, sum(c1) / c2)) AS "result" FROM table_t1; SELECT (if (count(if (c4 = 0, null, c3 / c4)) = 0, null, sum(c1) / count(if (c4 = 0, null, c3 / c4)))) AS "result" FROM table_t1; 父主题: SELECT
  • GROUP BY转换 MySQL/ADB 分组查询的时候允许查询非分组字段,不报错;DWS分组查询时只能查询分组字段和聚集函数,报错。因此补齐没有group by的查询分组字段。 输入示例 1 SELECT e.department_id, department_name, ROUND(AVG(salary), 0) avg_salary FROM employees e JOIN departments d on e.department_id = d.department_id GROUP BY department_name ORDER BY department_name; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 SELECT e.department_id, department_name, ROUND (AVG(salary), 0) AS "avg_salary" FROM employees "e" JOIN departments "d" ON e.department_id = d.department_id GROUP BY department_name, 1 ORDER BY department_name; 父主题: SELECT
  • 关键字 GROUP BY:按列可分为单列GROUP BY与多列GROUP BY。 单列GROUP BY:指GROUP BY子句中仅包含一列,col_name_list中包含的字段必须出现在attr_expr_list的字段内,attr_expr_list中可以使用多个聚合函数,比如count(),sum(),聚合函数中可以包含其他字段。 多列GROUP BY:指GROUP BY子句中不止一列,查询语句将按照GROUP BY的所有字段分组,所有字段都相同的记录将被放在同一组中,同样,GROUP BY中出现的字段必须在attr_expr_list的字段内,attr_expr_list也可以使用聚合函数。
  • 示例 左外连接时利用student_info表中的courseId与course_info中的courseId进行匹配,返回已经选课的学生姓名及所选的课程名称,没有匹配值的右表记录将返回NULL。 1 2 SELECT student_info.name, course_info.courseName FROM student_info LEFT OUTER JOIN course_info ON (student_info.courseId = course_info.courseId);
  • 示例 将“SELECT courseId FROM course_info WHERE courseName = 'Biology'”定义为公共表达式nv,然后在后续的查询中直接利用nv代替该SELECT语句。 1 WITH nv AS (SELECT courseId FROM course_info WHERE courseName = 'Biology') SELECT DISTINCT courseId FROM nv;