作者rockchangnew (rock)
看板Database
标题Re: [SQL ] SQL新手问语法。
时间Mon Nov 4 21:21:27 2013
※ 引述《jonce007 (汪汪)》之铭言:
: : 目前是用
: : select no, count(*) as tno , sum(amt) as tamt from tb_a group by no
: : union
: : select '合计' as no, count(*) as tno , sum(amt) as tamt from tb_a
: : 但是这样,server应该会跑两次运算吧。
: : 可以group完再group同时出现 row 1-4,而server端只运算一次吗?
: : 我试过subselect
: : select '合计' as no, sum(tno), sum(tamt) from
: : (select no, count(*) as tno , sum(amt) as tamt from tb_a group by no ) as t1
: : 但这也只是我要的row 4, row 1-3不见了。
: : 想不出来啊,请提示一下好吗? 感恩。
: : --
: : ◆ From: 1.164.2.207
: : → bohei:感觉无论如何都一定要两次 10/31 23:33
: : → bohei:第一次先group第二次才能去sum 10/31 23:34
: 感谢b大的回应
: 我的意思是,如果资料库有100万笔
: 用之前union的写法,server 不就要算200万笔?
: 第一次算完100万笔後,如果得到3000笔,
: 希望只再算这3000笔做加总。
: 有 select count(*),sum(xx).. group by xx to temp t1 这种功能的语法吗?(MYSQL)
: ^^^^^^^^^^^
: 如果有,之後就能写成 t1 所有的row union t1 total的row
: select * from temp table t1
: union
: selct count(*),sum(xx) from t1;
: delete temp table t1;
: 如果不行或很复杂,考量server负担,在local端计算再自行补上最後这笔total
with t1(noTmp,countTmp,sumTmp) as
(select no, count(*), sum(amt) from tb_a group by no)
select * from t1
union
select 'total',sum(countTmp),sum(sumTmp) from t1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.224.65