/ / Promedio ponderado de MySQL - mysql, sql, base de datos

Media ponderada de MySQL: base de datos mysql, sql

Tengo una base de datos SQL en PHPMyAdmin y estoy intentando escribir consultas para ella.

Una de las consultas que quiero escribir es: Encuentre el promedio de una columna que contiene todos los tiempos de datos y visualice ese promedio. El problema que tengo es que un artículo fue traído dos veces al mismo tiempo. El nombre de la tabla es Pedidos. Por ejemplo:

Aquí hay una foto de los datos.

¿Cómo escribiría esta consulta SQL?

El resultado final quiero un datetime que es el promedio de todos los tiempos de datos anteriores. Recordar la cifra de fecha y hora inferior debe calcularse dos veces en el promedio.

¡Gracias!

Respuestas

2 para la respuesta № 1

Wow, esta fue una pregunta difícil. Pero parece que lo tengo funcionando. He intentado varias cosas, pero no pude usar la función avg mysql después de todo:

SELECT FROM_UNIXTIME(SUM(Quantity * UNIX_TIMESTAMP(DateTimeStart)) / SUM(Quantity)) AS `avg-time` FROM orders;

¿Cómo llegué a esta consulta?

  1. Supongo que su mesa se llama "órdenes".
  2. Para calcular con fechas se prefiere convertir las fechas primero a marcas de tiempo de Unix. Yo uso el UNIX_TIMESTAMP Función mysql para hacer esto.
  3. Multiplico cada inicio de datos (como marcas de tiempo de Unix) con su cantidad.
  4. Calculo la suma de esos.
  5. Lo divido por la suma total de cantidades.
  6. Podríamos estar listos ahora. Pero supongo que te gustaría tener una forma legible otra vez (yo también en realidad), así que para convertir la marca de tiempo promedio de Unix de nuevo a una fecha legible que uso FROM_UNIXTIME.