2016-03-03 67 views
0

我如何計算三個表中的行數並返回三個行數的總和?如何計算行數

+0

UNION三個查詢和SUM計數值 –

回答

1
select sum(rowcount) from 
(
select count(*) as rowcount from tablea a 
UNION 
select count(*) from tableb b 
UNION 
select count(*) from tablec c 
) 
2

這將返回在你的數據庫的每個表計數只需添加WHERE篩選您希望

http://www.dba-oracle.com/t_count_rows_all_tables_in_schema.htm

select 
    table_name, 
    to_number(
    extractvalue(
     xmltype(
     dbms_xmlgen.getxml('select count(*) c from '||table_name)) 
    ,'/ROWSET/ROW/C')) row_count 
from 
    user_tables 
order by 
    table_name; 

的那些就包括這在CTE得到SUM

WITH cte AS ( 
    select 
     table_name, 
     to_number(
     extractvalue(
      xmltype(
      dbms_xmlgen.getxml('select count(*) c from '||table_name)) 
     ,'/ROWSET/ROW/C')) row_count 
    from 
     user_tables 
    WHERE table_name in ('table1', 'table2', 'table3') 
) 
SELECT SUM(row_count) 
FROM cte 
1

由於表的行數返回爲一個單列的結果,你可以穿越加盟三個結果,並與+操作總結他們:

SELECT  a.cnt + b.cnt + c.cnt 
FROM  (SELECT COUNT(*) AS cnt FROM table_a) a 
CROSS JOIN (SELECT COUNT(*) AS cnt FROM table_b) b 
CROSS JOIN (SELECT COUNT(*) AS cnt FROM table_c) c 
1
select sum(v.cnt) as total_sum 
from 
(select count (*) as cnt from <<table1>> 
    union all 
    select count (*) as cnt from <<table2>> 
    union all 
    select count (*) as cnt from <<table3>>) v 
0
select 
cnt1 + cnt2 + cnt3 
as mycnt 
from 
(SELECT COUNT (*) as cnt1 FROM s1.t1), 
(SELECT COUNT (*) as cnt2 FROM s1.t2), 
(SELECT COUNT (*) as cnt3 FROM s1.t3) 

是我結束了使用。謝謝大家。