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,優化至少*可能*。 –