主页
焦点
娱乐
科技
旅游
教育
生活
房产
人才
时尚
美食
名企
汽车
体育
文旅
人物
健康
影视
家居
互娱
图片
会议
首页
>
焦点
> 使用SQLServer来过滤数据
大家都在看
▪ 爷青回!QQ农场今日回归,偷菜快乐重启
▪ 算力无界,AI无距!超聚变发布FusionXpark™随身智能体开发平台
▪ 神思汉方茶在第二届国际健康发展大会荣获大奖
▪ 2024 国际健康发展大会在长沙顺利闭幕
▪ 《2024 “寻美黔东南”:新媒体团队走进镇远》
▪ 神思汉方科技助力新媒体与健康教育融合盛宴
▪ 《“寻美黔东南”:2024 剑河采风活动盛大举行》
▪ 《2024 “寻美黔东南”:新媒体总编走进榕江感受 “村超” 魅力》
▪ 秒音之声·仙界传奇 张家界亚洲群星演唱会新闻发布会暨开票仪式盛大举行
▪ 第二届国际健康发展大会在长沙瑞吉酒店盛大启动
▪ 刘长江:国医大师平台——国际健康发展大会联席主席、发起人
▪ 欧莱雅中国“Bonjour!你好!有意思青年”开启青年公益的新廿之程
▪ 尊恩国际王超与法国前总理拉法兰在中法60周年畅谈时尚品牌与红酒产业发展
▪ 助力安全出行开学季,享道出携手与杨浦公安开展交通安全培训活动
▪ 签约总额132.2亿元 江陵2023纺织智造园区招商会今日在深举行
娱乐热点
▪ 国愿酱酒发布会暨全球高端晚宴举行明星王奕心助阵
▪ 米乐百业新闻发布会:重新定义后互联网时代商业生态
▪ 贝壳找房代言人黄轩:跑步是我最喜欢的运动之一
▪ 《中国有星宝》城市海选圆满落幕
▪ 殿堂级场景娱乐现场X光电娱乐之都,下一站,广州!
▪ Bedsonline优化中文网站,大力发展中国市场
▪ 跑进城市副中心 感受首都新动能
▪ 年轻人兴趣社交平台“侃侃猩”发布
▪ 揭秘山寨明星寄生链条:一年出演上千场
▪ 考生迎接冲刺,补水有讲究!
▪ CCF-腾讯犀牛鸟基金项目申请全面启动
▪ 宏碁桌面云全面落地 助力辽省信息化建设
▪ 宏碁桌面云技术落地 东北弯道超车新契机
▪ 由“硬产品”到“软硬结合解决方案”看宏碁如何玩转桌面云
▪ 还没毕业就当上CTO,凭啥?
使用SQLServer来过滤数据
网上收集 2009/8/3 17:11:24
(278)
关系型数据通常以规范化形式保存,就是说你应该尽可能少地重复数据;通常情况下,表与表之间仅通过各种键值实现关联。进一步地讲,规范化的含义就是:你不能在数据库中保存计算后的值,而你只能在需要的时候临时计算数据库中保存的值。
对数据进行某些分析通常是很重要的。比方说,你或许想知道哪些产品的定单最多或者哪些定单的利润最大。这些问题都要求你针对自己的SQL语句创建执行过滤规则的公式。其中最重要的语句之一就是GROUP BY子句。
Northwind数据库中的定单
Northwind数据库是包含在SQL Server安装软件中的两个示范数据库。这个数据库虽然谈不上完美无缺但也足够满足我们讨论GROUP BY语句的目的了。原因之一是它工作原理清晰,运行良好,包含了一整套标准的数据表,比如Customers(客户)、Orders(定单)、Order Details(定单细节)和处理定单的Products(产品)。
表的结构模式
如果你想查看各个定单的OrderID和ProductID ,以下的SQL命令可以满足要求:
SELECT o.OrderID, od.ProductID
FROM Orders o, [Order Details] od
WHERE o.OrderID = od.OrderID
这样你就通过OrderID字段把Orders和Order Details连接了起来。给出的结果列表即显示各定货条目的OrderID和ProductID。
你可以从这个列表中找到条目数量最大的定单。可是,再想想,要能简单地要求数据库计算出需要的条目数目不更方便吗?如果你不关心单个条目而只想知道订购条目数量最大的定单,那么你可以采用以下的SQL语句:
SELECT o.OrderID, Count(od.ProductID) as NumItems
FROM Orders o, [Order Details] od
WHERE o.OrderID = od.OrderID
这样就可以总计出产品的数量并用一个名为NumItems的新字段来显示总数。可是,如果你执行该语句则可能得到以下错误:
Server: Msg 8118, Level 16, State 1, Line 1
选择语句中的'o.OrderID'列是无效的,因为它没有包含在汇集函数之内而且没有相应的GROUP BY 子句。
在这种情况下,你实际上在总计ProductID,但OrderID却没有被计算总和或者有其他操作施加于其上。
其实这个示例中计算的并不是订购产品条目的总数而是特定订购产品条目的数目。换句话说,你可以看到某一特定定单包括三种产品,但却并不能表示客户各订购了5种。你得到的正是按照定单统计的产品总量。你应该用GROUP BY字句来查看订购产品的总数。
使用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
现在你就得到问题的答案了。如图B所示的部分结果,定单号11077订购了25种产品,而排第2的最大定单则只订购了6类产品。
理解规则
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
现在你得到了定单、订购量排前列的数量以及定单总项。
GROUP BY是过滤数据的一种强有力的工具。为了在你的SQL表内计算数据,它的功能不可小看。
阅读(278)
(责任编辑:城市网)
北京美图
爷青回!QQ农场今日回归,偷菜快乐重启
全球精英齐聚,共绘“产业蓝海·新智康养·药膳出海”新蓝图
BOE(京东方)“焕新2026”年终媒体智享会落地深圳 绘就显示产业生态新蓝图
算力无界,AI无距!超聚变发布FusionXpark™随身智能体开发平台
光良遇劲敌,人民川酒入局千亿光瓶酒市场
共筑健康产业新高地 2024国际健康发展大会在长沙举行
神思汉方茶在第二届国际健康发展大会荣获大奖
2024 国际健康发展大会在长沙顺利闭幕
《2024 “寻美黔东南”:新媒体团队走进镇远》
神思汉方科技助力新媒体与健康教育融合盛宴
《“寻美黔东南”:2024 剑河采风活动盛大举行》
《2024 “寻美黔东南”:新媒体总编走进榕江感受 “村超” 魅力》
相关推荐
▪ 爷青回!QQ农场今日回归,偷菜快乐重启
▪ 算力无界,AI无距!超聚变发布FusionXpark™随身智能体开发平台
▪ 神思汉方茶在第二届国际健康发展大会荣获大奖
▪ 2024 国际健康发展大会在长沙顺利闭幕
▪ 《2024 “寻美黔东南”:新媒体团队走进镇远》
▪ 神思汉方科技助力新媒体与健康教育融合盛宴
▪ 《“寻美黔东南”:2024 剑河采风活动盛大举行》
▪ 《2024 “寻美黔东南”:新媒体总编走进榕江感受 “村超” 魅力》
▪ 秒音之声·仙界传奇 张家界亚洲群星演唱会新闻发布会暨开票仪式盛大举行
▪ 第二届国际健康发展大会在长沙瑞吉酒店盛大启动
▪ 刘长江:国医大师平台——国际健康发展大会联席主席、发起人
▪ 欧莱雅中国“Bonjour!你好!有意思青年”开启青年公益的新廿之程
▪ 尊恩国际王超与法国前总理拉法兰在中法60周年畅谈时尚品牌与红酒产业发展
▪ 助力安全出行开学季,享道出携手与杨浦公安开展交通安全培训活动
▪ 签约总额132.2亿元 江陵2023纺织智造园区招商会今日在深举行
关于我们
-
联系我们
-
网站荣誉
-
广告服务
-
版权声明
-
网站地图
Copyright© 2007-2018 bj1.com.cn
首都热线
版权所有 QQ:165687462
中国·北京
粤ICP备14047004号-20