Stránka 1 z 1

Nefunkční Query v sql(snowflake)

Napsal: 10 lis 2017 09:38
od Leo1453
Ahoj, mám dotaz ohledně nefunkčního kódu. Rád bych získal záznamy z marketingových aplikací (CTR, CPC, impression, apod.), ale potřebuji proto použít aritmetické operátory a to se dostáváme k jádru problému. Při použití jakéhokoliv aritmtického operátoru mi dotaz neprojde a zahlásí chybu Numeric value '' is not recognized, přesto se mi zdá, že mám vše ošetřené správně. I když nastavím datový typ na Number, tak problém přetrvává (v jiných transformacích právě tohle bylo řešením).
Jak můžete vidět na kódu, zkouším propojit několik tabulek pomocí unionu, což je v pořádku, problém je ale, že
neprochází tento kód, rep. pouze dělení v něm:

((case when skl."impressions_sklik" = 0 then 0
when skl."clicks_sklik" = 0 then 0
when skl."clicks_sklik" = '' then 0
when skl."impressions_sklik" = '' then 0
ELSE (iff(skl."clicks_sklik" = 0 or skl."clicks_sklik" IS NULL or
skl."clicks_sklik" = '', 0, skl."clicks_sklik") /
iff(skl."impressions_sklik" = 0 or skl."impressions_sklik" IS NULL
or
skl."impressions_sklik" = '', 0, skl."impressions_sklik"))
END) as "CTR"
FROM "sklik" skl

nebo tenhle zápis:

(case when skl."impressions_sklik" = 0 then 0
when skl."clicks_sklik" = 0 then 0
when skl."clicks_sklik" = '' then 0
when skl."impressions_sklik" = '' then 0
when skl."clicks_sklik" IS NULL then 0
WHEN skl."impressions_sklik" IS NULL then 0
ELSE (skl."clicks_sklik" / skl."impressions_sklik")
END) as "CTR"

nebo tenhle, nefunguje ani jeden:

(case when skl."impressions_sklik" = 0 or skl."clicks_sklik" = 0 then skl."clicks_sklik" / skl."impressions_sklik" = 0
when skl."clicks_sklik" = '' or skl."impressions_sklik" = '' then skl."clicks_sklik" / skl."impressions_sklik" = 0
when skl."clicks_sklik" IS NULL or skl."impressions_sklik" IS NULL then skl."clicks_sklik" / skl."impressions_sklik" = 0
ELSE (skl."clicks_sklik" / skl."impressions_sklik")
END) as "CTR"
FROM "sklik" skl


Nicméně přidávám i úplný kód:


create table "shrnutí" as select
adw."adwords" as "Type",
adw."campaignID_adwords" as "campaignID",
adw."impressions_adwords"as "impression",
adw."CTR_adwords" as "CTR"
FROM "adwords" adw
UNION
select
skl."sklik" as "Type",
skl."Campaign_id_sklik" as "campaignID",
skl."impressions_sklik" as "impression",
(case when skl."impressions_sklik" = 0 then 0
when skl."clicks_sklik" = 0 then 0
when skl."clicks_sklik" = '' then 0
when skl."impressions_sklik" = '' then 0
ELSE (iff(skl."clicks_sklik" = 0 or skl."clicks_sklik" IS NULL or
skl."clicks_sklik" = '', 0, skl."clicks_sklik") /
iff(skl."impressions_sklik" = 0 or skl."impressions_sklik" IS NULL or
skl."impressions_sklik" = '', 0, skl."impressions_sklik"))
END) as "CTR"
FROM "sklik" skl
UNION
select
fad."facebook_ads" as "Type",
fad."cam_campaign_id_facebook_ads" as "campaignID",
fad."cam_impressions_facebook_ads" as "impression",
fad."cam_ctr_facebook_ads" as "CTR"
FROM "facebook_ads" fad