使用两个不同的 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 具有最大 numbername。然后,外部查询计算整个数据集中该名称的总和 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