SQL для вычисления общего общего и промежуточного общего числа

#sql #group-by #count #google-bigquery

# #sql #группировать по #подсчет #google-bigquery

Вопрос:

У меня есть пример данных, как показано ниже.

введите описание изображения здесь

Я хочу вычислить промежуточное общее число и общее число.

Вот что я хочу:

введите описание изображения здесь

Как я могу реализовать это в BigQuery как можно проще?

Спасибо миллион!

Ответ №1:

Агрегация плюс групповая агрегация:

 SELECT 
  product,
  COUNT(*),
  SUM(COUNT(*)) OVER ()
FROM test_table
GROUP BY product
 

Комментарии:

1. Мне нравится этот ответ, выглядит очень просто. Спасибо!

Ответ №2:

 We can use an inline view of the same. Looks pretty simple.

create table test_table
(
orders varchar2(20),
userid int
)

insert into test_table values ('Phone', 1);
insert into test_table values ('Computer', 2);
insert into test_table values ('Phone', 3);
insert into test_table values ('Computer', 4);
insert into test_table values ('Computer', 5);





**select orders,count(1) as user_count,
(select count(*) from test_table) as total_user_count
from test_table
group by orders**
 

Ответ №3:

что ж, я собираюсь ответить на этот вопрос, но, пожалуйста, не ожидайте, что кто-нибудь ответит вам в следующий раз, потому что просто «мы этого здесь не делаем» мы помогаем людям, мы не выполняем там домашнюю работу. Однако это ваши запросы: чтобы получить номер телефона пользователей, вы должны ввести запрос, подобный этому:

 SELECT COUNT(order) FROM (table-name) WHERE order LIKE "phone"
 

Чтобы получить количество пользователей компьютера, вам нужно ввести запрос, подобный этому:

 SELECT COUNT(order) FROM (table-name) WHERE order LIKE "computer"
 

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

Комментарии:

1. Ну, order LIKE "phone" должно быть "order" = 'phone' . Но есть ГРУППА ПО

Ответ №4:

   Select Distinct [Order]
  ,COUNT([Order]) [User Count] 
  ,(Select Count([Order]) FROM [orders]) [Total User Count]
  FROM [orders] 
  GROUP BY  [Order]
  ORDER BY [Order] DESC
 

Комментарии:

1. Хотя этот код может отвечать на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, повышает его долгосрочную ценность.