![](/img/trans.png)
[英]What does this EXPLAIN query plan output mean for my Redshift query?
[英]SQL query - What does taking the MIN of this boolean expression mean?
請原諒我對此一無所知...我正在參加數據分析課程,並且在練習中偶然發現了這個查詢:
SELECT
CASE
WHEN MIN(REGEXP_CONTAINS(STRING(ActivityDate), DATE_REGEX)) = TRUE THEN
"Valid"
ELSE
"Not Valid"
END
AS valid_test
FROM
`tracker_data_clean.daily-activity-clean`;
ActivityDate是包含日期類型數據的字段, DATE_REGEX是日期格式字符串的正則表達式變量。
我不知道,取這個 boolean 表達式REGEX_CONTAINS的 MIN() 是什么意思。
如果你們中的任何人能幫助我理解這樣做的概念,我將不勝感激。
謝謝 !
該查詢從表中選擇行並將REGEXP_CONTAINS()
function 應用於ActivityDate
列中的每個(字符串轉換的)值。 REGEXP_CONTAINS()
將根據值是否與DATE_REGEX
中的正則表達式模式匹配返回true
或false
。
MIN()
在這里的行為方式可能因實現而異:
MIN()
正在評估0
和1
。 如果所有值都是1
( true
),則MIN()
將為1
( true
),否則為0
( false
)。MIN()
如果所有值都為true
true
因為最小值為true
( true
比false
“更大”),否則返回false
。 根據實現,結果是MIN()
返回0
/ 1
或false
/ true
。 無論哪種方式,該結果都會與CASE
語句中的true
進行比較。 如果所有值都與正則表達式匹配,則比較結果為true
。
基本上,查詢是“每行在ActivityDate
列中都有有效日期嗎?” 結果將是一個包含單列valid_test
和一行的表,如果它們都匹配,則包含“Valid”,否則包含“Not Valid”。
另一種與某些編程語言相關的看待它的方式是MIN(bool_function())
類似於all()
,這意味着如果所有值都為true
true
同樣, MAX(bool_function())
類似於any()
,這意味着如果任何值為true
true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.