I need to replace the value in column imp
from 1-0
to 1
and sum it up. Column imp
is a STRING, so it also needs to be converted to INT. Each line represents the record so I need to sum up imp
and group by another column (in order to get the number of records for a specific Advertiser)
My data looks like this:
x
advertiser advertiser_id imp
Frank 123 1-0
Frank 123 1-0
Mike 124 1-0
My query:
SELECT
a.AdvertiserID as AdvertiserID,
SUM(
CASE
WHEN a.imp = '1-0' THEN "1"
END
),
b.advertiser_name as AdvertiserName,
FROM
(
`bigquery_table_a` a
INNER JOIN `another_bigquery_table` b ON (a.AdvertiserID = b.advertiser_id)
)
GROUP BY
AdvertiserID,
AdvertiserName
Error message: No matching signature for aggregate function SUM for argument types: STRING
Desired output:
advertiser advertiser_id imp
Frank 123 2
Mike 124 1
Advertisement
Answer
Are you just looking for aggregation and count()
?
SELECT AdvertiserID, AdvertiserName, COUNT(*)
FROM `bigquery_table_a` a JOIN
`another_bigquery_table` b
ON (a.AdvertiserID = b.advertiser_id
GROUP BY AdvertiserID, AdvertiserName;
Or, if you specifically want to count values of '1-0'
, use COUNTIF()
:
SELECT AdvertiserID, AdvertiserName, COUNTIF(imp = '1-0')
FROM `bigquery_table_a` a JOIN
`another_bigquery_table` b
ON (a.AdvertiserID = b.advertiser_id
GROUP BY AdvertiserID, AdvertiserName;