科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道细化解析:怎样使用SQL Server来过滤数据

细化解析:怎样使用SQL Server来过滤数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们知道,关系型数据一般以规范化的形式保存,也就是说你应该尽可能少地重复数据;在正常情况下,表与表之间仅通过各种键值实现关联。

作者:赛迪网 yashi 来源:天新网 2008年3月26日

关键字: 数据库 Mssql SQL SQL Server

  • 评论
  • 分享微博
  • 分享邮件

◆使用GROUP BY

使用GROUP BY就好比提出下面的问题:“我如何查看数据?“如果答案是“按照”某种要素来看那么你就可能用到GROUP BY。就我们的例子来说,你希望按照定单查看产品的数量,所以你就可以用OrderID字段进行分组。此外,采用ORDER BY 子句可以更容易地找出订购条目最多的定单。新的查询语句如下所示:

SELECT o.OrderID, Count(od.ProductID) as NumItems
FROM Orders o, [Order Details] od
WHERE o.OrderID = od.OrderID
GROUP BY o.OrderID
ORDER BY NumItems DESC

现在你就得到问题的答案了。

◆理解规则

GROUP BY具有相当高的灵活性,当然你还得遵守相应的语法规则。比如说,你可以在ORDER BY 子句中包含多个表列。如果你想查看每一客户订购产品各个类型的数量,那么你必须通过定单创建查询把客户连接到产品。图A显示的4表连接显然就要用到了。之后你要根据客户和产品进行分组同时对Order Details表内的Quantity列计算总和。查询语句如下:

SELECT c.CompanyName, p.ProductName, Sum(od.Quantity) as TotalBought
FROM Customers c, Products p, Orders o, [Order Details] od
WHERE
c.CustomerID=o.CustomerID AND
o.OrderID=od.OrderID AND
od.ProductID=p.ProductID
GROUP BY c.CompanyName, p.ProductName
ORDER BY CompanyName, TotalBought DESC

查询结果显示出数据库内每一客户购买各类产品的总数。

同时,你还可以在查询中置入多个汇集列。例如,假设你想查看的定单列表要显示单一项目的最大购买量以及该定单的项目总数,那么以下的语句就可以用Max函数来显示单一项目的最大订购量。这种方法还能对所购项目总量求和。

SELECT o.OrderID,
Max(od.Quantity) as TopItem,
Sum(od.Quantity) as TotalBought
FROM
Orders o,
[Order Details] od,
Products p
WHERE
o.OrderID = od.OrderID AND
od.ProductID=p.ProductID
GROUP BY o.OrderID
ORDER BY TotalBought DESC
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章