如何获取SQL中的多列计数

如何获取SQL中的多列计数,sql,count,database-table,Sql,Count,Database Table,假设我在SQL中有两个表。现在我想得到表1和表2的计数的商。我该怎么做 简言之: (# of rows in table 1) / (# of rows in table 2) 编辑: 这就是我所尝试的: SELECT COUNT(t1.a) / COUNT(t2.a) FROM table1 t1, table2 t2 记住: 对列进行计数时,数据为“NULL”的行将不计数。(如果使用Oracle,则可以使用count(a*)) sql中的Int除法与大多数语言一样,返回Int(5/2=

假设我在SQL中有两个表。现在我想得到表1和表2的计数的商。我该怎么做

简言之:

(# of rows in table 1) / (# of rows in table 2)
编辑: 这就是我所尝试的:

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

  • 对列进行计数时,数据为“NULL”的行将不计数。(如果使用Oracle,则可以使用count(a*))
  • sql中的Int除法与大多数语言一样,返回Int(5/2=2,而不是2.5)
试试这个:

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

以下是获得结果的一种方法:

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
如果还需要将表中的计数作为resultset中的独立列返回,我更喜欢第一个查询,例如:

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

这不会返回正确答案。最大的问题是两个表之间的交叉连接操作,COUNT()聚合处理的行数相同。这不会返回正确答案。最大的问题是两个表之间的交叉连接操作。COUNT()处理的行数聚合是相同的。此外,计数表达式中包含NULL的行将不包括在计数中。
 SELECT c1.cnt          AS table1_count
      , c2.cnt          AS table2_count
      , c1.cnt / c2.cnt AS q
   FROM ...