此问题已发布在此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日。
答案 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的年数。