电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

万能查询SQL统计方面

万能查询SQL统计方面_第1页
1/10
万能查询SQL统计方面_第2页
2/10
万能查询SQL统计方面_第3页
3/10
上周我总结了SQL 的使用及一些使用技巧. 这周补充总结下项目上遇到(或根据遇到的情况发散学习)的SQL 技巧. 一、 万能查询 SQL(统计数据时的万能,也许其他方面并不万能) 所谓万能 SQL 是在不考虑效率的情况下,几乎都能通用的查询 SQL。 目前我发现的万能 SQL 包括两种形式: 形式一、相同的记录需要得到多种该记录对应的唯一结果,而这些结果不能在同一个 SQL 查询。 先看下我的公式: Select * from (从主表查询唯一记录数) t1, (查询 t1 记录唯一对应的结果 1) t2, (查询 t1 记录唯一对应的结果 2)t3, Where t1…=t2….(+) And t1…=t2…..(+) 再解释下上面的查询 第一步,查询得到t1,t1 做为结果的基列,是正确结果的一部分。T1 的记录数与最终结果记录数相同。 第二步,t2,t3 两个查询只是对 t1 结果列的一个补充。在我的应用中,t2 与 t3 大多都是以与 t1 相关联的字段进行 group by 的一个统计结果。需要注意对应 t1 的一条记录,t2 t3 不能有多条结果。 第三步,t1 与 t2,t3 进行外连接,查询出结果。 形式二、UNION 与 UNION ALL 两个或多个来源不同的信息需要汇总到一起,就需要 UNION 或 UNION ALL 形式一的思想是:固定行数不变。 形式二的思想是:固定列数不变。 那么形式一加形式二是否就实现了万能查询了呢?至少对我现在这个应用去统计非常苛刻的需求来说万能查询几乎都是万能的。 需要注意的是: 万能查询效率问题: 在一些情况下,大多查询都走索引,效率还是很高的。 在另外一些情况下,查询也是走了索引,但效率就很低,为什么?因为查询数据量大,SQL 结构不是最优。 还有一种情况,查询不走索引,当然不走索引不一定慢。 遇到这种问题时,一般把查询拆开借用临时表会有所改善,另外种方法是对 SQL 的查询语句本身的优化(结构上与 SQL效率上进行优化) 二、 AVG 与 SUM 当一张表包括两种信息(一种是已经统计好的信息,一种是还没统计的信息),如果需求是统计已经统计好的信息或统计还没统计的信息,很简单的一句 SQL 就搞定了。但如果要同时统计两种信息时,第一种想到的办法是自连接: 已经统计好的信息 与 还没统计的信息分开统计后再做连接。(用到万能连接思想) 第二种方法,例子一时想不起来了,先看下 SQL 结构 Select ,,, avg(t1.r1), sum(t1.r2), from table1 t1 group by … t1.r1 字段已经是...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

万能查询SQL统计方面

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部