p;BY state; 453 454 ST ZIP_COUNT 455 -- --------- 456 AK 360 457 AL 1212 458 AR 1309 459 AZ 768 460 CA 3982 461 462 在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDER BY语句,ORDER BY子句可以使用列或组函数。 463 464 select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC; 465 466 ST COUNT(*) 467 -- -------- 468 NY 4312 469 PA 4297 470 TX 4123 471 CA 3982 472 473 用HAVING子句限制分组数据 474 475 现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的 : 476 477 错误 478 SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept=''''OUTSIDE'''' AND SUM(sale_amount)>10000 GROUP BY sales_clerk 479 480 481 这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句: 482 483 SELECT sales_clerk,SUN(sale_amount) 484 FROM gross_sales 485 WHERE sales_dept=''''OUTSIDE'''' 486 GROUP BY sales_clerk 487 HAVING SUM(sale_amount)>10000; 488 489 嵌套函数 490 491 函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF .THEN ELSE的函数。 492 493 嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中。比如下面的例子: 494 495 SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt, 496 COUNT(DISTINCT job) jobs, 497 COUNT(DISTINCT mgr) mgrs 498 FROM emp 499 GROUP BY deptno; 500 501 DEPTNO CNT JOBS MGRS 502 ------ --- ---- ---- 503 10 4 4 2 504 20 4 3 4 505 30 3 3 2
上一页 [1] [2] [3] [4] [5] [6] |