group by a,b,c) --c小计
union
(select a,'小计' b,'' c,sum(Mavg) Mavg,sum(Mcount) Mcount from
(select a,b,c,avg(s) as Mavg,count(s) Mcount from cq_tt group by a,b,c)
as chen
group by a) --A小计
union
(select a,b,'小计' c,sum(Mavg) Mavg,sum(Mcount) Mcount from
(select a,b,c,avg(s) as Mavg,count(s) Mcount from cq_tt group by a,b,c)
as chen
group by a,b) --B小计
Top
mark.
Top
经典收藏。
Top
值得收藏!
Top
嗯!好!!!
Top
学习了不少,感谢大家做出的贡献
Top
mark
Top
哈哈。。太简单了!哈哈。。
Top
topengdali(大力)
怎么有空到这儿瞧..
WEB这东东可是没什么好玩的耶.偶都要改行了
Top
select a,b,c
from a
where a IN
(select d from b )
Top
结束。
Top
good
Top
mark
Top
oracle:
select 'sql的精妙不在于写的简短,而在于能使得查询效率提高' from dual
Top
说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b )
这是一个可以优化的sql语句,给a表中的a和b表中的d使用索引,然后改为
select a,b,c from a where exists (select * from b where b.d=a.a)
总结说一点:
1、要合理使用索引
索引是一个重要的构成部分,很都会忽略它,其实索引的根本目的就是
为了提高查询效率。
使用原则如下:
在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则
由优化器自动生成索引。
在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要
建立索引。比如在雇员表的性别列上只有男与女两个不同值,因此就
无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度
。
如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
在写sql语句时就必须注意有些写法是会使得无法使用索引的,比如IS NULL
IS NOT NULL,IN ,NOT IN 等。。。
2.避免或简化排序
应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生
输出时,优化器就避免了排序的步骤。以下是一些影响因素:
索引中不包括一个或几个待排序的列;
group by或order by子句中列的次序与索引的次序不一样;
排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并表(尽管有时可
能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应
当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-30385-43.html
银行如要储蓄存款带动流动资金运转
很让中国丢脸
敌人要到你头上拉屍