Sin impuesto Con impuesto

En qué tramo de importe compran tus clientes: una consulta SQL

Gustavo veía muchas visitas al carrito y pocas ventas, y sospechaba de los gastos de envío. Pidió a ChatGPT una consulta que agrupara los pedidos por tramos de importe con el envío medio y la compartió. Aprendes a usarla, el fallo que tenía la segunda versión y la versión corregida.

Equipo Rekire
Actualizado: 29/07/2024 7
En qué tramo de importe compran tus clientes: una consulta SQL
Compartir:

Gustavo, de la comunidad, revisaba la analítica de un cliente: muchas visitas al carrito y pocas ventas. Su sospecha era la de siempre: el cliente entra al carrito para saber cuánto le cuesta el envío y, al verlo, se va. Para tener datos pidió a ChatGPT una consulta SQL que agrupara los pedidos por tramos de importe y diera el coste medio del envío en cada tramo, y la compartió en el grupo. Es una buena herramienta para decidir dónde poner el envío gratis.

Lo que ya sabía de otro cliente

Unos meses antes había contado un caso parecido. A otro cliente le añadió la opción de calcular el envío en el carrito desplegable, con un evento de Google en el botón de calcular. Ese evento se disparaba más veces que las visitas al carrito. Al final lo quitaron, porque al cliente le interesaba tener los carritos abandonados y la analítica de quién llegaba al checkout. Pero la conclusión quedó clara: el cliente quiere saber el coste del envío lo antes posible y sin esfuerzo.

La consulta

La primera versión agrupaba los pedidos en tramos de 10 € y daba cuántos había en cada uno y el envío medio. La segunda añadía las unidades por pedido y el precio medio por producto uniendo la tabla de líneas de pedido. Y ahí estaba el fallo: al unir con order_detail hay una fila por cada línea, así que el recuento salía en líneas, no en pedidos, y la media del envío se inclinaba hacia los pedidos con muchas líneas.

Esta versión lo resuelve calculando primero cada pedido y agrupando después:

SELECT
  CASE
    WHEN t.importe >= 100 THEN 'Más de 100 €'
    ELSE CONCAT(FLOOR(t.importe / 10) * 10, '-', FLOOR(t.importe / 10) * 10 + 10, ' €')
  END AS tramo,
  COUNT(*) AS pedidos,
  ROUND(AVG(t.envio), 2) AS envio_medio,
  ROUND(AVG(t.unidades), 1) AS unidades_por_pedido
FROM (
  SELECT o.id_order,
         o.total_products_wt AS importe,
         o.total_shipping_tax_incl AS envio,
         SUM(d.product_quantity) AS unidades
  FROM ps_orders o
  JOIN ps_order_detail d ON d.id_order = o.id_order
  WHERE o.valid = 1
    AND o.date_add >= '2024-01-01'
  GROUP BY o.id_order, o.total_products_wt, o.total_shipping_tax_incl
) t
GROUP BY tramo
ORDER BY MIN(t.importe);

Cómo usarla:

  • Cambia ps_ por el prefijo de tus tablas, como recordó Gustavo. Es lo primero que falla.
  • total_products_wt es el importe de los productos con IVA; si prefieres trabajar sin IVA, usa total_products.
  • o.valid = 1 deja fuera los pedidos cancelados o sin pagar. Sin ese filtro, los intentos fallidos de pago inflan los tramos bajos.
  • Cambia la fecha para mirar el periodo que te interese. Mejor un año entero, para que no pese una campaña concreta.
  • Ejecútala en phpMyAdmin. El Gestor SQL de Parámetros avanzados → Base de datos solo admite lecturas y valida cada tabla y columna, así que puede rechazar una consulta con subconsulta como esta.

Cómo leer el resultado

Te saldrá una tabla con los tramos, cuántos pedidos hay en cada uno, lo que pagaron de envío de media y cuántas unidades llevaban. Fíjate en tres cosas:

  1. Dónde se concentran los pedidos. Si la mayoría está entre 30 y 50 €, un envío gratis a partir de 100 € no lo va a ver casi nadie.
  2. Cuánto pesa el envío en los tramos bajos. Si en los pedidos de 10-20 € el envío medio es de 6 €, el envío le suma al cliente entre un 30 % y un 60 % a lo que compra. Ahí está buena parte del abandono.
  3. El salto de un tramo al siguiente. Si hay un hueco justo debajo de tu umbral de envío gratis y un pico justo encima, el umbral funciona: la gente añade algo para llegar.

Otro miembro del grupo comentó que un 10 % de conversión desde el carrito no le parecía mal y que trabajaría el checkout y los avisos por correo o push. Gustavo lo veía bajo comparado con otros clientes. Con esta tabla y la de tu analítica puedes salir de la opinión y mirar tus números.

Si quieres que el cliente vea en el carrito cuánto le falta para el envío gratis, RKR Cart Rewards muestra esa barra de progreso.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba