highcharts – mostrar venta total por dia

publicado por: Anonymous

Necesito saber como sumar las ventas de mi tabla por fecha.

Que por cada fecha, los valores del campo total se sumen, para asi poder mostrarlo en mi reporte gráfico.

Esta es mi tabla:
introducir la descripción de la imagen aquí

Esto es lo que llevo avanzado:

<?php 
require_once('verifica.php');
include 'php/conexion.php';
$sql = "SELECT * FROM venta ORDER BY fecha_emision, total ASC";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row

?>


        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <style type="text/css">
${demo.css}
        </style>
        <script type="text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
            type: 'spline'
        },
        title: {
            text: 'Ventas de Nueva Agricola'
        },
        subtitle: {
            text: 'Estadistica de Ventas del Año'
        },
        xAxis: {
            type: 'datetime',
            dateTimeLabelFormats: { // don't display the dummy year
                month: '%e. %b',
                year: '%b'
            },
            title: {
                text: 'Dias'
            }
        },
        yAxis: {
            title: {
                text: 'Montos por Fecha'
            },
            min: 0
        },
        tooltip: {
            headerFormat: '<b>{series.name}</b><br>',
            pointFormat: '{point.x:%e. %b}: S/ {point.y:.2f} '
        },

        plotOptions: {
            spline: {
                marker: {
                    enabled: true
                }
            }
        },

        series: [{
            name: 'Nueva Agricola 2015-2016',
            // Define the data points. All series have a dummy year
            // of 1970/71 in order to be compared on the same x axis. Note
            // that in JavaScript, months start at 0 for January, 1 for February etc.
            data: [<?php     while($row = $result->fetch_assoc()) {
            echo "[Date.UTC(".date('y,m,d', strtotime($row['fecha_emision']))."),".$row['total']."],"; 

            }
        ?>

            ]
        }]
    });
});
        </script>


</head>
<body class="light_theme  fixed_header left_n
av_fixed">
      <div class="container clear_both padding_fix">
        <!--\\\ container  start \\\-->



<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>


      </div>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

</body>
</html>

<?php

} else {
    echo "0 results";
}
$conn->close();
?>

Y esto es lo que me esta reportando:

introducir la descripción de la imagen aquí

Y lo que quiero es que por cada día, me muestre solo un valor del acumulado en ventas por dicha fecha, en vez de mostrarlo todo.

solución

Lo que necesitas hacer es una agrupación y conteo de los valores agrupados.

Para realizar esto en MySQL se necesitar utilizar GROUP BY la cual se encarga de agrupar por un campo en particular, de forma tal que en la sección SELECT de tu query puedas hacer cálculos sobre alguna columna.

Para tu ejemplo específico, necesitas agrupar por la columna fecha_emision y en las columnas a seleccionar indicar que quieres sumar los valores de la columna total:

SELECT fecha_emision, SUM(total) as total_dia 
FROM venta 
GROUP BY fecha_emision 
ORDER BY fecha_emision
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *