2013-11-28 38 views
1

假設我在SQL中有兩個表。現在我想獲得表1的計數和表2的計數的商。我該怎麼做?如何獲得SQL中的多列數

在短:

(# of rows in table 1)/(# of rows in table 2) 

編輯: 這是我的嘗試:

SELECT COUNT(t1.a)/COUNT(t2.a) 
FROM table1 t1, table2 t2 

回答

0
with 
    Ctable1 as 
     (select count(*) as num1 from table1), 
    Ctable2 as 
     (select count(*) as num2 from table2) 
select num1/num2 as quotient 
from Ctable1,Ctable2 

記住:

  • 當你數列,行機智h「NULL」數據將不計數。 (如果你使用Oracle,你可以在最喜歡的語言SQL使用count(A *)
  • INT除法,返回INT(5/2 = 2,而不是2.5)
+0

這不會返回正確的答案。最大的問題是兩個表之間的CROSS JOIN操作,由COUNT()聚合處理的行數是相同的。 – spencer7593

-1

試試這個:。

SELECT COUNT(table1.column) as 'Table 1 Count' 
,COUNT(table2.column) as 'Table 2 Count' 
,COUNT(table1.column)/COUNT(table2.column) as 'Quotient' 
FROM table1, table2 
+0

這不會返回正確的答案。最大的問題是兩個表之間的CROSS JOIN操作。由COUNT()聚合處理的行數是相同的。此外,計數表達式中的NULL值不會包含在計數中。 – spencer7593

0

這裏有一種方法來獲得結果:

SELECT c1.cnt/c2.cnt AS q 
    FROM (SELECT COUNT(1) AS cnt 
      FROM table1 
     ) c1 
CROSS 
    JOIN (SELECT COUNT(1) AS cnt 
      FROM table2 
     ) c2 

另一種方式來獲得同樣的結果:

SELECT (SELECT COUNT(1) FROM table1)/(SELECT COUNT(1) FROM table2) AS q 

我寧願先查詢,如果我還需要從表中作爲單獨的結果集返回的列的計數,例如:

SELECT c1.cnt   AS table1_count 
     , c2.cnt   AS table2_count 
     , c1.cnt/c2.cnt AS q 
    FROM ...