簡體   English   中英

計算兩列中非 NULL 的行

[英]Count rows with non-NULL in two columns

我正在嘗試比較 SQL 中的兩組:

create table my_counts
as select count(*) as total, 
          count(c.cookie) as first,
          count(l.cookie) as second, 
          count(l.cookie and c.cookie) as common
from (select distinct s.cookie from ...) c
full outer join
     (select distinct s.cookie from ...) l
on c.cookie = l.cookie;
select * from my_counts;

但是,上述失敗並出現此錯誤:

失敗: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector無法轉換為org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector

當然(假設上面的 SQL 語句做了我認為應該做的事情),我應該有total + common = first + second ,所以common列不是絕對必要的,但我仍然想知道是否有辦法計算行數其中兩列都是非NULL

AND - 是一個布爾運算符。 看起來cookie是一個字符串,而不是布爾值。 嘗試用這個替換count(l.cookie and c.cookie)count(case when l.cookie is not null and c.cookie is not null then 1 else NULL end) as common

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM