Вопрос или проблема
CREATE TEMP TABLE minuteSleeps
AS
SELECT
secondMinuteSleep.Id AS ID,
secondMinuteSleep.date AS TIMES,
secondMinuteSleep.Value AS VALUE,
secondMinuteSleep.logId as LOGID
FROM
`case-study-438019.FitBit.secondMinuteSleep` AS secondMinuteSleep
JOIN
`case-study-438019.FitBit.minuteSleep` AS minuteSleep
ON secondMinuteSleep.value = minuteSleep.value
SELECT COUNT(value)
FROM minuteSleeps;
Я попытался создать временную таблицу под названием minute sleeps, которая объединяет две таблицы, scondMinuteSleep
и minuteSleep
. Я хочу объединить две таблицы и затем подсчитать ненулевые значения в столбце, но вместо этого я продолжаю получать ошибку:
Синтаксическая ошибка: неожиданные ключевые слова SELECT на [15:1]
Я думаю, что я могу что-то упустить или способ его настройки может быть неправильным, но я не уверен, потому что это мой первый раз, когда я пробую написать код на SQL самостоятельно.
Ответ или решение
Для того чтобы успешно создать временную таблицу и подсчитать значения в одном из столбцов, необходимо обратить внимание на порядок выполнения SQL-запросов и требования к синтаксису. Ваша цель — создать временную таблицу, объединив данные из двух существующих таблиц, а затем подсчитать количество ненулевых значений в определенном столбце. Однако в вашем запросе есть некоторые недочеты, которые могут вызывать ошибку.
Вот как можно модифицировать ваш SQL-запрос:
- Создание временной таблицы: Убедитесь, что у вас правильный синтаксис и набор данных.
- Подсчет ненулевых значений: Вам нужно использовать
WHERE
для фильтрации ненулевых значений.
Вот исправленный пример вашего SQL-кода:
-- Создаём временную таблицу и выбираем необходимые данные
CREATE TEMP TABLE minuteSleeps AS
SELECT
secondMinuteSleep.Id AS ID,
secondMinuteSleep.date AS TIMES,
secondMinuteSleep.Value AS VALUE,
secondMinuteSleep.logId AS LOGID
FROM
`case-study-438019.FitBit.secondMinuteSleep` AS secondMinuteSleep
JOIN
`case-study-438019.FitBit.minuteSleep` AS minuteSleep
ON
secondMinuteSleep.value = minuteSleep.value;
-- Подсчитываем количество ненулевых значений в столбце VALUE
SELECT COUNT(VALUE)
FROM minuteSleeps
WHERE VALUE IS NOT NULL;
Объяснение изменений:
-
Создание таблицы: Синтаксис для создания временной таблицы используется корректно. Убедитесь, что все названия таблиц и столбцов написаны без ошибок, и используйте точки, чтобы указать группу таблиц корректно.
-
Подсчет: Чтобы подсчитать ненулевые значения в столбце, используем условие
WHERE VALUE IS NOT NULL
, что гарантирует исключение null значений из подсчета. -
Порядок выполнения: Обратите внимание на то, что команды
CREATE TEMP TABLE
иSELECT
должны быть разделены. После создания временной таблицы вы можете запускать дальнейшие команды, такие какSELECT
.
Если у вас по-прежнему будет возникать ошибка после внесения этих изменений, стоит проверить:
- Наличие необходимого доступа к таблицам.
- Проверить, правильно ли написаны названия таблиц и полей.
- Прочитать возможные дополнительные сообщения об ошибках, чтобы диагностировать проблему более точно.
Ваш подход к объединению данных и подсчету значений довольно хорош и при корректной реализации будет работать эффективно. Желаю удачи в ваших начинаниях с SQL!