使用两个不同的 WHERE 获取两个值
Getting two values with two different WHERE
所以我试图获取一个值,该值是来自一个州的姓名的最大数量,然后是来自所有州的该姓名的总数。
我想我必须做一个 WHERE * IN
但不知道该放什么。这是我目前所拥有的
SELECT name,SUM(number) as total
FROM
`bigquery-public-data.usa_names.usa_1910_current`
where state = 'AL'
group by name;
考虑:
select name, sum(number) total
from bigquery-public-data.usa_names.usa_1910_current t
where name = (
select name
from bigquery-public-data.usa_names.usa_1910_current
where state = 'AL'
order by number desc
limit 1
)
group by name
子查询恢复状态 AL 具有最大 number
的 name
。然后,外部查询计算整个数据集中该名称的总和 number
。
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT name,
SUM(IF(state = 'AL', number, 0)) count_in_AL,
SUM(number) total_count
FROM `bigquery-public-data.usa_names.usa_1910_current`
GROUP BY name
ORDER BY count_in_AL DESC
LIMIT 1
结果
Row name count_in_AL total_count
1 James 158827 5015584
这意味着:James 是阿拉巴马州最受欢迎的名字(158,827),所有州的总数为 5,015,584
所以我试图获取一个值,该值是来自一个州的姓名的最大数量,然后是来自所有州的该姓名的总数。
我想我必须做一个 WHERE * IN
但不知道该放什么。这是我目前所拥有的
SELECT name,SUM(number) as total
FROM
`bigquery-public-data.usa_names.usa_1910_current`
where state = 'AL'
group by name;
考虑:
select name, sum(number) total
from bigquery-public-data.usa_names.usa_1910_current t
where name = (
select name
from bigquery-public-data.usa_names.usa_1910_current
where state = 'AL'
order by number desc
limit 1
)
group by name
子查询恢复状态 AL 具有最大 number
的 name
。然后,外部查询计算整个数据集中该名称的总和 number
。
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT name,
SUM(IF(state = 'AL', number, 0)) count_in_AL,
SUM(number) total_count
FROM `bigquery-public-data.usa_names.usa_1910_current`
GROUP BY name
ORDER BY count_in_AL DESC
LIMIT 1
结果
Row name count_in_AL total_count
1 James 158827 5015584
这意味着:James 是阿拉巴马州最受欢迎的名字(158,827),所有州的总数为 5,015,584