Заказ большого запроса сгруппированным полем - PullRequest
0 голосов
/ 04 июня 2018

У меня есть запрос, который группирует по дате, который работает нормально.

SELECT EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern')) date, SUM(users) total_users FROM `mydataset.mytable` 
GROUP BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'))

, но когда я пытаюсь сделать заказ по дате:

SELECT EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern')) date, SUM(users) total_users FROM `mydataset.mytable` 
GROUP BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'))
ORDER BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'));

я получаю следующую ошибку:

SELECT list expression references column timestamp which is neither grouped nor aggregated at [1:35]

Столбец метки времени явно является частью группы, и даже более странно, что он работает без предложения ORDER BY ... Что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018
#standardSQL
SELECT 
  EXTRACT(DATE FROM DATETIME(timestamp, 'US/Eastern')) date, 
  SUM(users) total_users 
FROM `mydataset.mytable` 
GROUP BY 1
ORDER BY 1 
0 голосов
/ 04 июня 2018

Вы можете попробовать выбрать:

#standardSQL
SELECT
  date,
  total_users
FROM (
  SELECT
    EXTRACT(date FROM DATETIME(timestamp,'US/Eastern')) date,
    SUM(users) total_users
  FROM
   `mydataset.mytable`
  GROUP BY EXTRACT(date FROM DATETIME(timestamp, 'US/Eastern'))
  )
ORDER BY
   date
...