SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST,METHOD HAVING (REQUEST ='FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER' OR REQUEST='FC.Ocean.Job.Server.CBizOzDocHeader')
AND COUNT(*) >3
ORDER BY REQUEST
如上语句的注意事项
HAVING后的条件不能用别名COUNT>3 必须使用COUNT(*) >3,否则报:列名 'COUNT' 无效。
having 子句中的每一个元素并不一定要出现在select列表中,如上面的语句可以写成:
SELECT REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST,METHOD HAVING (REQUEST ='FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER' OR REQUEST='FC.Ocean.Job.Server.CBizOzDocHeader')
AND COUNT(*) >3
ORDER BY REQUEST
SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST,METHOD ORDER BY REQUEST
如果把该语句写成:
SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST ORDER BY REQUEST
那么将报:
选择列表中的列 'REQUESTMETH.method' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
注意:
1、使用GROUP BY 子句时,SELECT 列表中的非汇总列必须为GROUP BY 列表中的项。
2、分组时,所有的NULL值分为一组。
3、GROUPBY 列表中一般不允许出现复杂的表达试、显示标题以及SELECT列表中的位置标号。
如:SELECT REQUEST,METHOD, COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY
REQUEST,2 ORDER BY REQUEST 是错误的。
错误信息为:每个 GROUP BY 表达式都必须包含至少一个列引用。
SELECT COUNT(*) AS COUNT, MAX(BOOKID) AS MAXBOOKID,CATEGORYID FROM BOOK
WHERE DOTNUMBER >10 GROUP BY CATEGORYID
HAVING MAX(BOOKID) < 50
ORDER BY CATEGORYID
以上语句:先过滤出点击率大于10的,然后按类型(CATEGORYID )进行分组,再过滤出每组的最大值小于50个
行,最后进行按CATEGORYID进行排序。
GROUP BY 中使用 ORDER BY注意事项:
SELECT COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY REQUEST,METHOD ORDER BY REQUEST,METHOD
--这样是允许的, ORDER BY后面的字段包含在GROUP BY 子句中
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNT(*) DESC
--这样是允许的,ORDER BY后面的字段包含在聚合函数中,结果集同下面语句一样
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC
--这样是允许的,区别于HAVING,HAVING后不允许跟聚集函数的别名作为过滤条件
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD
--这样是错误的:ORDER BY 子句中的列 "REQUESTMETH.method" 无效,因为该列没有包含在聚合函数或
GROUP BY 子句中。
SELECT DISTINCT 中使用 ORDER BY注意事项:
SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME
以上语句将报:
--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的项就必须出现在选择列表中。
因为以上语句类似
SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME
其实错误信息也为:
--ORDER BY子句中的列"BOOK.BookName" 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
应该改为:SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK ORDER BY BOOKNAME
SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK
SELECT BOOKID,BOOKNAME FROM BOOK GROUP BY BOOKID,BOOKNAME
以上两句查询结果是一致的,DISTINCT的语句其实完全可以等效的转换为GROUP BY语句
分享到:
相关推荐
SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between SQL Aliases SQL Join SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL ...
当需要去除重复值时,可以在聚合函数中使用`DISTINCT`,如`SELECT CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice) FROM Products WHERE UnitPrice > 30 GROUP BY CategoryID ORDER BY CategoryID...
- 当`GROUP BY`与`ORDER BY`一起使用时,`ORDER BY`子句应该放在`GROUP BY`之后。 通过以上示例可以看出,`GROUP BY`语句结合聚合函数在SQL查询中有着广泛的应用,可以帮助我们高效地处理复杂的数据分析任务。希望...
在`GROUP BY`查询中,我们可以使用`ORDER BY`来排序结果,但需要注意的是`ORDER BY`应用于分组后的结果,而不是原始数据。例如: ```sql SELECT 类别, SUM(数量) AS 数量之和 FROM A GROUP BY 类别 ORDER BY ...
如果使用了表达式,那么在GROUP BY中也需要指定相同的表达式,不能使用别名。 4. 除了聚集函数,SELECT语句中的每一列都需要在GROUP BY子句中明确给出。 5. 对于含有NULL值的分组列,NULL会被视为一个单独的分组,...
在实际应用中,`DISTINCT`和`GROUP BY`可以结合其他关键字,如`HAVING`(用于过滤分组后的结果)和`ORDER BY`(用于排序结果),以实现更复杂的查询需求。了解这些基本操作对于有效管理和分析数据库中的数据至关重要...
在 SQL 中,我们可以使用 ORDER BY 语句来排序字段。例如,我们可以使用以下代码来排序字段: ```sql SELECT * FROM 表名 ORDER BY 字段 ASC ``` 条件查询 在 SQL 中,我们可以使用 WHERE 语句来实现条件查询。...
删除表中多余的重复记录可以使用以下 SQL 语句: ```sql DELETE FROM people WHERE peopleId IN (SELECT peopleId FROM people GROUP BY peopleId HAVING COUNT(peopleId) > 1) AND rowid NOT IN (SELECT ...
- **组合使用**:`DISTINCT`可以与其他SQL关键字如`GROUP BY`、`HAVING`等结合使用,实现更复杂的数据筛选和统计需求。 ```sql SELECT DISTINCT column1, SUM(column2) FROM table_name GROUP BY column1; ``` #...
- `GROUP BY`子句可以结合`DISTINCT`关键字用于消除重复行,但`DISTINCT`通常不与`GROUP BY`一起使用,因为`GROUP BY`本身就是用来分组去重的。 7. **扩展应用**: - `GROUP BY ROLLUP`用于创建分组的层次结构,...
在上述示例中,对品牌名称字段进行`GROUP BY`和`HAVING`的平均时间是0.453秒,而使用`DISTINCT`的平均时间是0.39秒,这表明在某些情况下,两者的性能可能相差不大。 总的来说,Oracle SQL 中去除重复记录有多种方法...
对于更复杂的情况,可以使用子查询结合`GROUP BY`和`HAVING`来实现去重。这种方法通常用于处理需要按某些条件分组的数据。 **示例:** 假设我们要找出每个员工处理订单数量最多的日期: ```sql SELECT employee_id,...
通过`ORDER BY`进行数据排序,利用`GROUP BY`和`HAVING`进行复杂的数据分组和筛选,以及借助`DISTINCT`消除重复,你可以构建出更复杂的查询,从而更有效地从海量数据中提取所需信息。在实际应用中,结合其他SQL函数...
2.查询执行步骤:包括 select、distinct、top_specification、from、join、on、where、group by、having、order by 等步骤,每一步骤都会产生一个虚拟表,并作为下一步骤的输入。但这些虚拟表对调用者不可用,只有...
本章的学习目标是让学生掌握如何使用T-SQL语句来操作数据库中的数据,包括但不限于数据库和表的操作,SELECT语句的基本结构,以及如何使用GROUP BY和ORDER BY子句,以及汇总函数的应用。 首先,SQL语言是数据库操作...
介绍如何使用ORDER BY子句对查询结果进行排序。这包括如何按升序或降序排列,以及如何同时指定多个排序字段。 #### 2.10 消除重复项 讨论了如何去除查询结果中的重复行,通常涉及到DISTINCT关键字的使用。 #### ...
6. **Group By/Having**:`Group By` 将数据按指定字段分组,`Having` 则用于在分组后过滤数据,类似 `WHERE` 但针对的是分组后的结果。 7. **Exists/In/Any/All/Contains**:这些谓词用于检查条件的存在性,如 `...
- 只能在最后一个`SELECT`语句中使用`GROUP BY HAVING`子句。 - 示例:合并`[tstudentinfo]`表与`[tusersex]`表的信息,并按`userIdCard`降序排列。 ```sql SELECT x.userName, x.userIdCard FROM ...
本资源摘要信息档案旨在帮助学生熟悉SQL语言的基本概念和操作,包括SELECT命令、GROUP BY子句、HAVING子句、ORDER BY子句、INSERT命令、UPDATE命令、DELETE命令、CREATE TABLE命令等。 知识点1:SELECT命令 ...
使用group by关键字也可以取得不重复的值,例如:Select name from Lin_test group by name功能同distinct,但group by的条件必须是查找出来的所有的元素。使用distinct后,Oracle就会在查找的时候对后面的字段进行...