ALTER TABLE. ADD COLUMN

В таблице films хранится информация о фильмах, в том числе и рейтинг фильма на разных сайтах. В поле imdb — рейтинг IMDB от 0 до 10, а в поле kinopoisk— рейтинг кинопоиска. Также от 0 до 10.

Добавьте в таблицу поле rating, для хранения среднего арифметического значения по всем рейтингам. По умолчанию поле должно содержать 0. Тип данных используйте такой же как и у других полей с рейтингом.

Помогите пожалуйста разобраться с синтаксисом и как создать это среднее значение по двум полям? я попробовал так, не получилось

ALTER TABLE films ADD COLUMN rating FLOAT NOT NULL (rating = (kinopoisk + imdb) / 2);

Выдаёт просто пустые колонки, без значений


Ответы (2 шт):

Автор решения: Oopss
CREATE TABLE films (
  Id INTEGER PRIMARY KEY ,
  name TEXT ,
  imdb INTEGER,
  kino INTEGER
);

INSERT INTO films VALUES (1,'Zorro',3,3);
INSERT INTO films VALUES (2,'Peper Chily',9,6);
INSERT INTO films VALUES (3,'King Kong',1,5);
SELECT * FROM films;
ALTER TABLE films add column rat float;
update films set rat=(imdb+kino)/2;
SELECT * FROM films;

+----+-------------+------+------+
| Id | name        | imdb | kino |
+----+-------------+------+------+
|  1 | Zorro       |    3 |    3 |
|  2 | Peper Chily |    9 |    6 |
|  3 | King Kong   |    1 |    5 |
+----+-------------+------+------+
+----+-------------+------+------+------+
| Id | name        | imdb | kino | rat  |
+----+-------------+------+------+------+
|  1 | Zorro       |    3 |    3 |    3 |
|  2 | Peper Chily |    9 |    6 |  7.5 |
|  3 | King Kong   |    1 |    5 |    3 |
+----+-------------+------+------+------+
→ Ссылка
Автор решения: Akina
ALTER TABLE films 
    ADD COLUMN rating FLOAT GENERATED ALWAYS AS ((imdb+kino)/2) VIRTUAL;

fiddle (спасибо Oopss за шаблон исходных данных).

→ Ссылка