Как добавить значения в столбцы в запросе SQL? - PullRequest
1 голос
/ 04 мая 2019

У меня есть вопрос к домашней работе, который я не совсем понимаю.Меня просят сделать запрос, который приведет к дополнительным значениям в той же строке, что означает добавление дополнительных столбцов, насколько я понимаю.Я понятия не имею, как это сделать, К сожалению, ответы на существующие вопросы здесь, похоже, не отвечают на мой вопрос, Может быть, я что-то упускаю (я нуб SQL).

Вот вопрос:

Напишите запрос, который возвращает следующие данные: строку на дату и время проведения, где каждая строка имеет показы и клики для всех вариантов и для элемента управления.Варианты идентифицируются как vrows, где вариант_ид не равен нулю, элемент управления идентифицируется как строки, где вариант_ид равен 0.

Например, для приведенных ниже данных запрос вернет:

2018-01-01, 2,32323,212,95262,354

2018-01-01,5,76675,5454,675675,5454

2018-01-02,2,0,0,7834, 99

2018-01-02,5,0,0,9664,144

Таблица: https://i.ibb.co/kVZTyt5/ob.jpg

Пока я пробовал это:

SELECT date, abtest_id, impressions, clicks FROM table1 WHERE variant_id IS NOT NULL
GROUP BY date, abtest_id;

И вот результат:

2018-01-01 2 5454 11

2018-01-01 5 76675 5454

2018-01-02 2 7834 99

2018-01-02 5 776 12

Я не знаю, как добавить больше кликов и показов к результатам на том жеСтрока, И, глядя на пример из вопроса, я не понимаю, как и почему некоторые из этих значений существуют.Буду признателен за любую помощь.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Мне не нужно добавлять столбцы или строки в таблицу. Вам нужно выбрать данные и внести несколько сумм в некоторые поля.

Я бы сделал что-то подобное в MySQL (отключена только полная группа по режиму):

SELECT t.*,
SUM(CASE 
    WHEN variant_id != 0 THEN impressions 
    ELSE 0 
    END) v_impressions,
SUM(CASE 
    WHEN variant_id != 0 THEN clicks 
    ELSE 0 
    END) v_clicks
FROM `tests` as t
GROUP BY date, abtest_id;

Хотя может быть более простой синтаксис.

Выбирает данные из строк, в которых вариант_ид = 0, суммирует показы и клики, где вариант_ид! = 0, и группирует по дате и abtest_id.

0 голосов
/ 04 мая 2019

Во всех СУБД Вы можете использовать INSERT OR UPATE.

INSERT для добавления новых значений Обновление для изменения старых значений

Синтаксис простой вставки: Вставить в tableName (столбец1, столбец2, ...) Значения (значение1, значение2, ...)

Синтаксис простого обновления:

Update TableName
Set Column1=value1, Column2=value2

Вы можете использовать там, где конец простых кодов выше

Вставить синтаксис для другой таблицы: Вставить в tableName (столбец1, столбец2, ...) выберите t.column1, t.column2 ... из имени таблицы2

Синтаксис простого обновления:

Update TableName
Set Column1=value1, Column2=value2
Where colmn1= myValuse
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...