BigQuery - исключить исключить записи с определенными значениями - PullRequest
0 голосов
/ 11 мая 2018

Я бы хотел исключить записи с определенными значениями. Например, я не хочу BridgeTokens с appName A. Затем подсчитайте оставшиеся BridgeTokens (строка 2,6,7), сгруппированные по appName. Как это сделать в BigQuery? Таблица:

Row   BridgeToken   appName
1     ffffff1       A 
2     ffffff2       B 
3     ffffff3       C
4     ffffff3       B
5     ffffff3       A
6     aaaaaa4       C
7     bbbbbb2       B

Результат моего запроса не является точным.

SELECT
    COUNT(bridgeToken) AS Bridges,
    appName
  FROM
    `<DB>`
  WHERE NOT BridgeToken IN (
     SELECT DISTINCT BridgeToken 
     FROM `<DB>` 
     WHERE appName IN("A")
    AND date < "2018-05-01 00:00:00"
    AND date >= "2018-04-01 00:00:00")
  GROUP BY
    appName 
ORDER BY
  Bridges DESC

Заранее спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

Ниже для BigQuery Standard SQL

#standardSQL
SELECT
  COUNT(bridgeToken) AS Bridges,
  appName
FROM  `project.dataset.your_table`
WHERE NOT BridgeToken IN (
  SELECT DISTINCT BridgeToken 
  FROM `project.dataset.your_table` 
  WHERE appName IN("A")
)
GROUP BY appName 
ORDER BY Bridges DESC   

вы можете проверить это с помощью фиктивных данных из вашего вопроса

#standardSQL
WITH `project.dataset.your_table` AS (
  SELECT 'ffffff1' BridgeToken, 'A' appName UNION ALL 
  SELECT 'ffffff2', 'B' UNION ALL 
  SELECT 'ffffff3', 'C' UNION ALL
  SELECT 'ffffff3', 'B' UNION ALL
  SELECT 'ffffff3', 'A' UNION ALL
  SELECT 'aaaaaa4', 'C' UNION ALL
  SELECT 'bbbbbb2', 'B' 
)
SELECT
  COUNT(bridgeToken) AS Bridges,
  appName
FROM  `project.dataset.your_table`
WHERE NOT BridgeToken IN (
  SELECT DISTINCT BridgeToken 
  FROM `project.dataset.your_table` 
  WHERE appName IN("A")
)
GROUP BY appName 
ORDER BY Bridges DESC  

Результат

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