Переменные в MySQL

165
04 февраля 2020, 14:10

Вопросы закомментированы в коде:

SELECT t1.name,
       # можно ли сохранить результат в переменную, что бы ниже при вычислениях не вызывать SELECT повторно?
       (SELECT COUNT(name) FROM users WHERE users.name = u1.name)                battles, 
       COUNT(CASE WHEN t2.player_type = 'A' THEN 1 END)                          count_a,
       COUNT(CASE WHEN t2.player_type = 'B' THEN 1 END)                          count_b,
       COUNT(CASE WHEN t2.player_type = 'C' THEN 1 END)                          count_c,
       # И возможно ли сохранить результат выполнения COUNT?
       # что бы к примеру ниже написать battles / count_type_a
       (SELECT COUNT(name) FROM users WHERE users.name = u1.name) /
       COUNT(CASE WHEN u2.player_type = 'A' THEN 1 END)                          avgA
FROM players t1
LEFT JOIN players t2
  ON  t1.battle_id = t2.battle_id
  AND t1.player_key = t2.killer_player_key
GROUP BY t1.name;
Answer 1

Вместо переменных в SQL принято оборачивать выборку внешним запросом и использовать алиасы:

SELECT name, battles, count_a, count_b, count_c,
       battles / count_a avgA
  FROM (
        SELECT t1.name,
               (SELECT COUNT(name) FROM users WHERE users.name = u1.name) battles, 
               COUNT(CASE WHEN t2.player_type = 'A' THEN 1 END) count_a,
               COUNT(CASE WHEN t2.player_type = 'B' THEN 1 END) count_b,
               COUNT(CASE WHEN t2.player_type = 'C' THEN 1 END) count_c
     FROM players t1
     LEFT JOIN players t2
       ON  t1.battle_id = t2.battle_id
      AND t1.player_key = t2.killer_player_key
    GROUP BY t1.name
  ) X
READ ALSO
Как составить запрос json rpc?

Как составить запрос json rpc?

Пишу json rpc api , проблема такая: посылаю запрос на один адрес exampleru/api/jsonrpc

167
Защита COOKIE от подмены

Защита COOKIE от подмены

у меня есть авторизация на сайте через стимДалее человеку присваиваются его веб права на основе группы

174
Всплывающее окно по клику

Всплывающее окно по клику

У меня есть всплывающее окно, которое появляется по клику на кнопку, всплывающее окно содержит график

195
Найти ближайшее число из массива

Найти ближайшее число из массива

Есть массив и переменная:

192