Я пытаюсь использовать 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

SELECT COUNT(value) 
FROM minuteSleeps; 

Я попытался создать временную таблицу под названием minute sleeps, которая объединяет две таблицы, scondMinuteSleep и minuteSleep. Я хочу объединить две таблицы и затем подсчитать ненулевые значения в столбце, но вместо этого я продолжаю получать ошибку:

Синтаксическая ошибка: неожиданные ключевые слова SELECT на [15:1]

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

Ответ или решение

Для того чтобы успешно создать временную таблицу и подсчитать значения в одном из столбцов, необходимо обратить внимание на порядок выполнения SQL-запросов и требования к синтаксису. Ваша цель — создать временную таблицу, объединив данные из двух существующих таблиц, а затем подсчитать количество ненулевых значений в определенном столбце. Однако в вашем запросе есть некоторые недочеты, которые могут вызывать ошибку.

Вот как можно модифицировать ваш SQL-запрос:

  1. Создание временной таблицы: Убедитесь, что у вас правильный синтаксис и набор данных.
  2. Подсчет ненулевых значений: Вам нужно использовать 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; 

Объяснение изменений:

  1. Создание таблицы: Синтаксис для создания временной таблицы используется корректно. Убедитесь, что все названия таблиц и столбцов написаны без ошибок, и используйте точки, чтобы указать группу таблиц корректно.

  2. Подсчет: Чтобы подсчитать ненулевые значения в столбце, используем условие WHERE VALUE IS NOT NULL, что гарантирует исключение null значений из подсчета.

  3. Порядок выполнения: Обратите внимание на то, что команды CREATE TEMP TABLE и SELECT должны быть разделены. После создания временной таблицы вы можете запускать дальнейшие команды, такие как SELECT.

Если у вас по-прежнему будет возникать ошибка после внесения этих изменений, стоит проверить:

  • Наличие необходимого доступа к таблицам.
  • Проверить, правильно ли написаны названия таблиц и полей.
  • Прочитать возможные дополнительные сообщения об ошибках, чтобы диагностировать проблему более точно.

Ваш подход к объединению данных и подсчету значений довольно хорош и при корректной реализации будет работать эффективно. Желаю удачи в ваших начинаниях с SQL!

Оцените материал
Добавить комментарий

Капча загружается...