Создание сгенерированного поля в mysql?

#mysql #sql

#mysql #sql

Вопрос:

 CREATE TABLE example
(

x INT,

y INT,

PRIMARY KEY (x, y));
  

введите описание изображения здесь

Я пытаюсь добавить в эту таблицу новую строку с именем Z, которая вычисляет следующее:

(1 / count number of times value of x is in the row x) * 100

Как вы можете видеть на картинке, которую я предоставил, моя попытка сработала, но она не показала все 6 строк. Я пытаюсь показать все 6 строк и добавить Z в таблицу как сгенерированное поле

Ответ №1:

Вы можете сделать это с помощью запроса:

 select e.*, 100.0 / count(*) over (partition by x) as z
from example e;
  

Оконные функции не допускаются в качестве сгенерированных столбцов. Вы можете поместить это в представление:

 create view v_example as
    select e.*, 100.0 / count(*) over (partition by x) as z
    from example e;
  

Комментарии:

1. Есть ли способ генерировать ответы без десятичных знаков? например; 25 вместо 25.0000

2. Вы можете использовать floor() : floor(100 / count(*) over (partition by x)) as z .