1
我有其中载有以下尺寸的表:逻辑或SQLite中
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)的任何值为true,则必须输出True值,否则为false。
我当时的解决方案尝试:
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
。
任何帮助优化查询或解决方案的另一种方法是高度赞赏。
有没有办法避免使用GROUP BY?通过增加查询的成本来分组,如果可能的话,我想避免它。 – user2400394
无论查询如何,它都必须*以某种方式搜索并合并具有匹配的'mkt_id' /'dow' /'dvc' /'feat'值的行。使用GROUP BY,优化至少*可能*。 –