SQLite,滑动以根据值和日期获得结果

时间:2014-08-11 13:29:10

标签: sql sqlite

此问题已发布在此thread.

中的建议中

我正在使用SQLite /数据库浏览器,我的数据如下所示:

data.csv
company  year  value
A        2000  15
A        2001  12
A        2002  20
B        2000  25
B        2001  20
B        2002  10
C        2000  18
C        2001  14
C        2002  22
etc..............

我想要做的是让所有公司在数据集中的所有年份都具有< = 20的值。使用上面的数据,这意味着我希望查询回答我:

result.csv
company    year   value
A          2000   15
A          2001   12
A          2002   20

因此,由于价值而将公司C排除在外> 2002年20,公司B价值> 2000年20日。

2 个答案:

答案 0 :(得分:2)

您希望所有公司的最大值不超过20:

SELECT *
FROM Data
WHERE company IN (SELECT company
                  FROM Data
                  GROUP BY company
                  HAVING max(value) <= 20)

答案 1 :(得分:1)

不确定是否有更好的解决方案,但我认为这样可行:

select company
,      sum(case when value < 20 then 1 else 0 end) s
,      count(*) c
from   data
where  year in (2000, 2001, 2002)
group
by     company
having s = c

它将检查计数是否等于该值小于20的年数。