Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est l'équivalent SQL de pandas 'transform' ?

Vous pouvez vous joindre à une table dérivée qui contient la valeur agrégée pour chaque groupement de b

select * from mytable t1
join (
    select avg(a), b
    from mytable
    group by b
) t2 on t2.b = t1.b

ou en utilisant une sous-requête

select *, (select avg(a) from mytable t2 where t2.b = t1.b)
from mytable t1

la question est étiquetée à la fois mysql et psql, donc je ne sais pas quelle base de données vous utilisez. Mais sur postgres, vous pouvez utiliser les fonctions de fenêtre

select *, avg(a) over (partition by b) 
from mytable