MySQL условная группа BigQuery - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть таблица ниже.Я хочу объединить несколько столбцов и GROUP BY store.Проблема в том, что если upc отрицательно и есть соответствующее положительное значение upc, я хочу, чтобы оно всегда выбирало положительное число.Если нет соответствующего положительного значения upc, то сохранение отрицательного значения - это нормально.Кроме того, когда я пытаюсь выполнить аналогичный запрос в Google BigQuery (который, на мой взгляд, использует MySQL) и пропускаю upc из GROUP BY, я получаю сообщение об ошибке «ВЫБРАТЬ столбец со ссылками на выражения списка upc, который не группируется и не агрегируется».Любая идея, почему BigQuery ведет себя не так, как MySQL, и как заставить запрос всегда принимать положительные значения upc?

Спасибо

CREATE TABLE upc (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
store  VARCHAR(30) NOT NULL,
amount DOUBLE,
total INT,
upc INT
);

INSERT INTO upc (store, amount, total, upc) VALUES
    ('123', 12.3, 1, 123),
    ('123', 45.6, 2, -666),
    ('789', 78.9, 3, 789),
    ('789', 78.9, 3, 789),
    ('456', 78.9, 3, -456),
    ('456', 78.9, 3, -456),
    ('123', 78.9, 3, 123);

SELECT store, SUM(amount), SUM(total), upc FROM upc 
GROUP BY store;

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Другой вариант заключается в использовании ANY_VALUE () вместо MAX () для исключения вычисления функции MAX, что влечет за собой дополнительные расходы - это может применяться к данным с действительно большим объемом.На небольших данных это может быть даже не видно

#standardSQL
SELECT store, SUM(amount), SUM(total), ANY_VALUE(upc)
FROM `project.dataset.upc`
GROUP BY store  
0 голосов
/ 29 ноября 2018

BigQuery не использует MySQL.Если вы хотите, чтобы положительное значение upc, вычислите MAX столбца:

SELECT store, SUM(amount), SUM(total), MAX(upc)
FROM upc 
GROUP BY store;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...