`
highfly-s
  • 浏览: 99871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql 分组查询

阅读更多
1:返回每个美国员工都为其处理过订单的所有客户

--思路:1:Employees表中获取美国员工总数2:Orders表中查询美国员工处理的Order,对CustomerID分组后,统计其不同的EmployeeID正好等于美国员工总数

Select CustomerID From Orders Where EmployeeID In         --得到美国员工服务 的客户

(Select EmployeeID From Employees Where Country=N'USA') -- 得到全部美国员工id

group by CustomerID                                         --按客户分组

Having Count(Distinct EmployeeID)=                    --为其处理订单的distinct 员工数等于美国总员工数

(Select Count(*) From Employees Where Country=N'USA')--美国员工总数

2:

返回在每月最后实际订单日期发生的订单(每月最后订单日期可能不是每月最后一天)

--思路:子查询按月分组得到每月最近订单日期

Select OrderID,CustomerID,EmployeeID,OrderDate

From Orders

Where OrderDate In

(Select Max(OrderDate) From Orders Group by Convert(char(6),OrderDate,112))--112表示YYYYMMDD char(6)提取YYYYMM



3.

Select字句在逻辑上是SQL语句最后进行处理的最后一步,所以,以下查询会发生错误:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate) AS OrderYear, CustomerID
   FROM dbo.Orders) AS D
GROUP BY OrderYear
;因为group by是在Select之前进行的,那个时候orderYear这个列并没有形成。


如果要查询成功,可以像下面进行修改:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate) AS OrderYear, CustomerID
   FROM dbo.Orders) AS D
GROUP BY OrderYear;还有一种很特殊的写法:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate), CustomerID
   FROM dbo.Orders) AS D(OrderYear, CustomerID)
GROUP BY OrderYear;在作者眼里,他是非常喜欢这种写法的,因为更清晰,更明确,更便于维护。


在查询中使用参数定向产生一批结果,这个技巧没有什么好说的。


嵌套查询,在处理逻辑上是从里向外进行执行的。
分享到:
评论

相关推荐

    SQL分组查询的教学探讨.pdf

    标题和描述中提到的关键词“SQL分组查询”、“教学探讨”、“数据库课程”、“教学效果”、“聚合函数”、“笛卡尔积”、“视图”、“HAVING子句”、“WHERE子句”、“ORDER BY子句”是文章讨论的核心知识点。...

    sql分组查询和聚合函数

    ### SQL 分组查询和聚合函数详解 #### 一、引言 SQL 是一门强大的数据库查询语言,用于管理和操作关系型数据库。其中,分组查询和聚合函数是非常重要的组成部分,能够帮助用户快速有效地从大量数据中提取有用信息。...

    sql分组查询

    下面的查询从说法上可以算得上是分组查询了,但是分组查询是不是就是指用group by来操作呢,我想在看了下面的例子后你会有清楚的答案

    oracle-plsql.zip_oracle_pl sql 分组查询_plsql_plsql 分组查询

    2. **分组查询**:在SQL中,GROUP BY语句用于根据一个或多个列对结果进行分组,常与聚合函数(如COUNT、SUM、AVG、MAX和MIN)一起使用,以便对每个分组执行统计计算。 3. **多表查询**:通过JOIN操作,可以从两个或...

    sql 分组查询问题

    sql 分组查询问题 Sql 分组查询是 SQL 语言中的一种重要查询方式,用于对数据进行分组和聚合操作。本文将通过三个情景来详细介绍 sql 分组查询问题的解决方法。 情景一:基本分组查询 在这个情景中,我们需要对一...

    JoSQL-src-stable-1.5.tar.gz_josql_objects_sql分组查询

    JoSQL 1.5的源代码。JoSQL(SQL for Java Objects)为...利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。比如要查找所有的Html文件:SELECT * FROM java.io.File Where name $Like "%html"

    SQL003分组查询练习.sql

    SQL003分组查询练习

    多行相同只显示第一行(分组显示).sql

    SQL查询结果部分字段信息重复时,去除重复信息,达到数据分组的效果,类似于EXCEL透视表,对数据库初学者还是有一定的帮助

    SQL之分组统计和子查询专题

    SQL之分组统计和子查询专题 李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL...

    SuperMap iObjects Java SQL查询中的分组查询

    这个范例主要是实现SQL查询中的分组查询,可以查询在一定的空间范围内各个地物的数目,这个在实践中很用的较广,比如查询某一区域内A类建筑、B类建筑、C类建筑的数目,有利于后续的小区的建设等等,但是这个查询只能...

    对SQL查询结果分组的过程分析与设计.pdf

    此外,数据库性能优化、数据挖掘和报表生成等方面,也都需要依托于对SQL分组查询深入的理解和应用。 综上所述,SQL查询结果分组是数据库操作中的核心技术之一,涉及到查询语句的编写、执行过程的理解和结果的分析。...

    sqlserver+group by分组查询分页存储过程

    根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...

    sql 分组,统计等常用语句

    这不仅包括基本的分组查询、条件筛选,还涉及到了更高级的功能,如聚合函数的使用、ROLLUP和CUBE的区别等。 ### 一、排序:ORDER BY `ORDER BY`子句用于对结果集进行排序,可以按照一个或多个列的值进行升序(ASC...

    SQL高级实例-模糊查询-分组随机查询-转换

    其次,**分组查询**是SQL中处理多行数据并进行统计分析的重要工具。`GROUP BY`语句允许我们根据一个或多个列对数据进行分组,然后使用聚合函数如`COUNT`、`SUM`、`AVG`、`MIN`和`MAX`来计算每组的总和、平均值等信息...

    分组计算[按时间]通用[sql分组;C#分组]

    #### SQL分组计算 SQL中的`GROUP BY`子句用于结合聚合函数(如`SUM()`, `AVG()`, `MAX()`, `MIN()`等),对结果集按照一个或多个列进行分组。这使得我们可以对每一组执行聚合操作,从而获得更有意义的数据视图。 #...

    SQL Server分组排序取数据的实现

    在SQL Server中,分组和排序是数据处理的两个关键操作。它们可以帮助我们对大量数据进行聚合、组织和筛选,以便更好地分析和理解数据。本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先...

    SQL各种查询方法

    4. **分组查询**:`GROUP BY`语句用于将数据按一个或多个列进行分组,常与聚合函数(如`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`)结合使用,例如`SELECT 列1, COUNT(*) FROM 表名 GROUP BY 列1`计算每组的数量。...

    Sqlch11_2having条件分组查询.sql

    Sqlch11_2having条件分组查询.sql,Sqlch11_2having条件分组查询.sql Sqlch11_2having条件分组查询.sql,Sqlch11_2having条件分组查询.sql

    sqlserver 分组合并 分组统计

    sqlserver 分组合并字符串 分组统计数量

    sql数据查询系统

    查询语句可能包含WHERE子句以过滤数据,GROUP BY子句进行分组,以及ORDER BY子句进行排序。 4. **安全性**:由于SQL注入攻击的可能性,系统需要对用户输入的查询进行适当的验证和清理,以防止恶意SQL代码被执行。这...

Global site tag (gtag.js) - Google Analytics