gpt4 book ai didi

sql - sqlite中的逻辑或

转载 作者:行者123 更新时间:2023-12-03 19:38:28 24 4
gpt4 key购买 nike

我有一张包含以下尺寸的表格:

mkt_id, dow, dvc, feat, val

val 是文本类型,包含真/假。
(mkt_id, dow, dvc, feat) 形成一个键,val 代表一个值。

为了选择各种键值对,我使用了查询:
SELECT * from <tablename> where mkt_id in (...) and feat = 'xyz'

下一个 : 在表中添加了另一个维度,称为 ptd .

对于相同的键组合(mkt_id、doq、dvc、feat),我得到了多个 val 的值由于添加了维度 ptd .

现在我的要求是,如果特定键(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而出错。 .

非常感谢在优化查询或解决方案的其他方法方面的任何帮助。

最佳答案

为每个 mkt_id 获取一个输出行/dow/dvc/feat组合,在这些列上使用 GROUP BY。

比较字符串时,true大于 false ,因此您可以使用 MAX() 来选择它:

SELECT mkt_id, dow, dvc, feat, MAX(val) AS val
FROM MyTableNameIsTopSecret
WHERE ...
GROUP BY mkt_id, dow, dvc, feat

(可以使用这四列上的单个索引来优化 GROUP BY;WHERE 中使用的列应该在索引中排在第一位。)

关于sql - sqlite中的逻辑或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32390911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com