2013-11-28 2 views
1

Скажем, у меня было две таблицы в SQL. Теперь я хотел бы получить коэффициент подсчета таблицы 1 и счет таблицы 2. Как я могу это сделать?Как получить счет нескольких столбцов в SQL

Вкратце:

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

EDIT: Это то, что я пробовал:

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, вы можете использовать счетчик (а *)
  • Int деление в SQL, как и большинство языков, возвращает 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 в выражении count не будут включены в счет. – 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 ... 
Смежные вопросы