我想在同一个表上放多个计数,输出应该只在一个表中使用'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;
答案 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'