一个表中有多个计数功能

时间:2017-01-30 12:38:29

标签: mysql sql

我想在同一个表上放多个计数,输出应该只在一个表中使用'name'。

select count(select count(TXN)
from sale1
where date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as c1, 
count(select count(TXN) from sale1 where RESPONSE='Y' date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as c2
 FROM sale1;

2 个答案:

答案 0 :(得分:0)

请试试这个 数(不同的TXN) 它将给出不同的计数,即它将计算一次的重复字段。

答案 1 :(得分:0)

根据我对你的问题的理解,你想对同一张桌子的数据进行多次计算,我假设这两个:

select count(TXN)
from sale1
where date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));

select count(TXN) from sale1 
where RESPONSE='Y' 
and date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY);

您的查询似乎不正确,似乎您希望在新查询count(select ...)上使用count,但您不能,count在行列表上工作目前的表格。

您可能希望这样做以在同一输出中包含不同的计数列:

select sum(case when response='y' then 1 else 0 end) as yes_count,
sum(case when date(SALEDATE)=DATE(DATE_SUB(NOW(), INTERVAL 1 DAY) then 1 else 0 end) as day_interval_count
from sale1 
where response='y'

在这里,我使用case when .. then .. end根据行值生成1或0,然后使用sum我们进行计数。

另一种方法是制作几个可以与union结合的查询来创建两行:

select count(x) as count
from sale1 
where response='y'
union
select count(x) as count
from sale1 
where response='n'