【发布时间】:2015-11-30 04:34:14
【问题描述】:
我有一张包含以下尺寸的表格:
mkt_id, dow, dvc, feat, val
val 是文本类型,包含真/假。 (mkt_id, dow, dvc, feat) 构成一个键,val 代表一个值。
为了选择各种键值对,我使用了查询:
SELECT * from <tablename> where mkt_id in (...) and feat = 'xyz'
NEXT:向表中添加了另一个维度,称为ptd。
对于相同的键组合(mkt_id、doq、dvc、feat),由于添加了维度ptd,我得到了多个val 值。
现在我的要求是,如果特定键(mkt_id、doq、dvc、feat)的任何值为真,否则我必须将值输出为真,否则为假。
我的解决方案尝试:
SELECT mkt_id, dow, dvc, feat,
CASE WHEN trueCount >= 1 THEN 'true' ELSE 'false' END as val
FROM( SELECT DISTINCT mkt_id,dow,dvc,feat,
SUM( CASE WHEN val='true' THEN 1 ELSE 0 END ) AS trueCount
FROM <tablename> WHERE mkt_id in (...) and feat = 'xyz'
问题是这个查询需要很长时间才能执行,最终由于database or disk full而出错。
非常感谢您在优化查询或解决方案的其他方法方面的任何帮助。
【问题讨论】:
标签: sql sqlite query-optimization