Получение двух значений с двумя разными ГДЕ - PullRequest
0 голосов
/ 23 апреля 2020

Итак, я пытаюсь получить одно значение, которое является МАКСИМАЛЬНЫМ номером имени из одного штата и затем суммой этого имени из всех штатов. Я думаю, что я должен сделать WHERE * IN, но не знаю, что туда поставить. Это то, что я до сих пор

SELECT name,SUM(number) as total
FROM
`bigquery-public-data.usa_names.usa_1910_current`
where state = 'AL'
group by name;

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Ниже для BigQuery Standard 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  

, что означает: Джеймс является самым популярным именем в AL (с 158 827) и с общим количеством по всему все штаты как 5,015,584

0 голосов
/ 23 апреля 2020

Рассмотрим:

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

Подзапрос восстанавливает name, который имеет наибольшее number для состояния AL. Затем внешний запрос вычисляет сумму number для этого имени по всему набору данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...