我正在尝试对具有多个条件的一组数据执行整体计数功能,但我遇到了麻烦。我是初学者,尝试使用简单的计数功能,但没有运气。我调查了使用案例,但遇到了麻烦。有谁知道我应该怎么做这个代码?
以下是我的表格示例:
Name | Date | Status | Candy | Soda | Water
Nancy | 10/19/16 | active | 2 | 0 | 1
Lindsy| 10/20/15 | active | 0 | 1 | 0
Erica | 10/20/13 | active | 0 | 2 | 3
Lane | 10/19/14 | active | 0 | 0 | 4
Alexa | 10/19/16 | notactive | 0 | 5 | 1
Jenn | 10/19/16 | active | 0 | 0 | 0
我希望在以下条件下对名称进行全面统计:糖果,苏打水或水不是零(无论是哪一列或多少,只要这三个中的一个是不是零),该帐户处于活动状态,并且当日期在过去两年内,即10/2014 - 10/2016。
我希望查询告诉我计数总数为3并且还显示:
Name | Date | Status | Candy | Soda | Water
Nancy | 10/19/16 | active | 2 | 0 | 1
Lindsy| 10/20/15 | active | 0 | 1 | 0
Lane | 10/19/14 | active | 0 | 0 | 4
答案 0 :(得分:0)
SELECT *
FROM yourTable
WHERE (Candy > 0 OR Soda > 0 OR Water > 0) AND
Status = 'active' AND
Date BETWEEN '2014-10-01' AND SYSDATE
答案 1 :(得分:0)
这是两个不同的问题。获取行的基本思路是:
select t.*
from t
where greatest(candy, soda, water) > 0 and
status = 'active' and
date >= curdate() - interval 2 year;
(在Oracle中,您可以使用sysdate
而不是curdate()
。)
要获得计数,您可以在count(*)
中使用*
而不是select
。 SQL查询仅返回一个结果集。 。 。所以你要么把所有行或都计算在内。