我在mySQL中使用以下sql 我不明白为什么我只输出一行作为输出。
python rethinkdb_monitor_batch.py
答案 0 :(得分:0)
只需做一些更改并尝试:
select category, count(*) as counts
from table_1
group by category
使用上面的代码并查看它是否返回多行,这意味着您的查询是正确的,但只有一行符合以下条件,即:
where date_add between '2016-07-01' and '2016-07-31'
group by category
所以Query返回一行,当你的数据库表有更多数据符合这个标准时,它会返回更多行。感谢。
答案 1 :(得分:0)
由于您按categories
进行分组,因此您在该日期范围内有多少categories
是您必须首先查找的内容。如果您在指定的日期时间内有{n}个categories
,理想情况下,结果集应该有'n'行。
您的查询本身没有任何问题。我尝试了两个类别的查询,我得到了预期的结果集。
如果您想要结果集中的所有类别而不管它们是否在结果集中,那么您可以使用以下类似的东西:
select category, count(*) as counts
from tab
where date_add between '2016-07-01' and '2016-07-31'
group by category
union
select category, 0 as counts
from tab
where date_add not between '2016-07-01' and '2016-07-31'
group by category
请注意,这是一种简单的方法,但肯定不是最好的
这将显示所有类别,而不考虑日期。你可以在这看到这个 - > http://sqlfiddle.com/#!9/a3a9b/2 在这看到 - > http://sqlfiddle.com/#!9/bdb979/1
如果您将小提琴中的数据集修改为三个类别,那么结果集将返回预期的3行。
在此处查看 - > http://sqlfiddle.com/#!9/ec7a8/1
同样重要的是要注意,类别必须在该日期期间出现才能显示在结果集中。
希望这有帮助!!!
答案 2 :(得分:0)
您显然只获得一行,因为只有一个类别符合where
条件。
如果您希望所有类别都具有该范围内的添加计数,请使用条件聚合:
select category,
sum(date_add between '2016-07-01' and '2016-07-31') as counts
from table_1
group by category;