Как суммировать даты в новый столбец

#mysql #sql

#mysql #sql

Вопрос:

Я хотел бы суммировать в совершенно новом столбце результат матча nba (nba database) , например: Если puntos_local > puntos_visitante столбец puntos будет увеличен на 3 . Если результат равен, то суммируйте только 1

 SELECT `equipo_local`, 
(case 
    when `puntos_local` > `puntos_visitante`
    then puntos=puntos 3 
    when `puntos_local` = `puntos_visitante`
    then puntos=puntos 1 
  end) AS puntos  
  FROM `partidos`

WHERE temporada LIKE "07/08"
-- GROUP BY `equipo_local`
ORDER BY puntos DESC, partidos.equipo_local
  

Я также пробовал что-то вроде:

 SELECT `equipo_local`,
  Sum(Case ( When `puntos_local` > `puntos_visitante` Then  puntos=puntos 3 Else 0 End)) As puntos
 ,Sum(Case ( When `puntos_local` = `puntos_visitante` Then puntos=puntos 1 Else 0 End)) As puntos
  FROM `partidos`
WHERE temporada LIKE "07/08"
-- GROUP BY `equipo_local`
ORDER BY puntos DESC, partidos.equipo_local
  

https://imgur.com/a/ijPCEU9
.
Я хотел бы, чтобы общий балл суммировался по каждому совпадению.
Если puntos_local > puntos_visitante , то столбец puntos будет puntos= puntos 3
Если это ничья, я бы хотел только суммировать 1 .

И в качестве окончательного результата я хотел бы получить общую оценку сезона. Ty

Ответ №1:

 SELECT `equipo_local`,

  Sum(puntos   
         (Case When `puntos_local` > `puntos_visitante` Then 3 Else 0 End)
  ) As puntos_x,

 ,Sum(puntos   
         (Case When `puntos_local` = `puntos_visitante` Then 1 Else 0 End)
  ) As puntos_y

FROM `partidos`
WHERE temporada LIKE "07/08"
-- GROUP BY `equipo_local`
ORDER BY puntos DESC, partidos.equipo_local
  

Ответ №2:

Вы можете попробовать это

 SELECT equipo_local, 
SUM(case 
    when puntos_local > puntos_visitante
    then 3 
    when puntos_local = puntos_visitante
    then 1
    else 0 
  end) AS puntos  
  FROM partidos

WHERE temporada LIKE "07/08"
GROUP BY equipo_local
ORDER BY puntos DESC, partidos.equipo_local
  

Ответ №3:

я думаю, вам нужно обновление

 update partidos
set puntos= case when puntos_local>puntos_visitante then puntos 3 
             when puntos_local=puntos_visitante then puntos 1 
   else puntos end 
  

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

1. проблема в том, что у меня нет столбца с именем puntos. Но я хочу создать его для отображения результата, который я хочу. Я пытался посмотреть, смогу ли я сделать это, физически не создавая его в базе данных. 🙂

2. @jose9988 поделитесь данными ваших таблиц и ожидаемым результатом, о котором идет речь

Ответ №4:

ВЫБЕРИТЕ equipo_local , SUM((случай, когда puntos_local > puntos_visitante затем 3, когда puntos_local = puntos_visitante затем 1 конец)) КАК puntos
ИЗ partidos

ГДЕ временные ЗНАЧЕНИЯ, ПОДОБНЫЕ «07/08», ГРУППИРУЮТСЯ В equipo_local ПОРЯДКЕ С помощью puntos DESC, partidos.equipo_local