Выполнение математической операции над временным столбцом в SQL - PullRequest
0 голосов
/ 19 августа 2011

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

SELECT t.t_id, count(DISTINCT tm.tm_id) AS occurances, t.value/occurances AS newValue
FROM table t
INNER JOIN table_map tm ON t.t_id = tm.tm_id
GROUP BY tm.tm_id
HAVING occurances > 1

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

SQL выполняется на MySQL 5 DB

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Может быть, вы имели в виду что-то вроде этого:

SELECT
  t.t_id,
  t.occurrences,
  t.value / tm.occurrences AS newValue
FROM table t
  INNER JOIN (
    SELECT
      tm_id,
      COUNT(*) AS occurrences
    FROM table_map
    GROUP BY tm_id
    HAVING COUNT(*) > 1
  ) tm ON t.t_id = tm.tm_id
0 голосов
/ 19 августа 2011

Просто добавьте его в подзапрос и сделайте математику после этого:

SELECT t_id, occurances, value/occurances AS newValue
from (
    SELECT t.t_id, count(DISTINCT tm.tm_id) AS occurances, t.value
    FROM table t
    INNER JOIN table_map tm ON t.t_id = tm.tm_id
    GROUP BY t.t_id
    HAVING occurances > 1) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...