【问题标题】:Create line chart using value from SQL database使用 SQL 数据库中的值创建折线图
【发布时间】:2020-09-24 00:34:38
【问题描述】:

所以我一直在关注这个教程:https://www.plus2net.com/php_tutorial/chart-line-database.php

我正在尝试向我的网站添加折线图以显示每个月的销售额。

这是我的 SQL 表的示例:

| ID |  user   | sale_id |         date        |
|  1 | RVN4372 | 1341234 | 2020-09-22 17:31:32 |
|  2 | OVI6517 | 5452351 | 2020-09-22 15:14:43 |
|  3 | RVN4372 | 8452176 | 2020-09-17 16:23:54 |
|  4 | FOK8905 | 7421312 | 2020-09-17 11:23:11 |
|  5 | DIF9127 | 4236123 | 2020-09-15 15:32:26 |

这是我当前查询的样子:

<?php
          
if($stmt = $link->query("SELECT user,COUNT(*) FROM sales WHERE yearweek(DATE(date), 1) = yearweek(curdate(), 1) GROUP BY user order by COUNT(*) DESC")){

$php_data_array = Array(); // create PHP array
while ($row = $stmt->fetch_row()) {
   $php_data_array[] = $row; // Adding to array
   }
}else{
echo $link->error;
}
//print_r( $php_data_array);
// You can display the json_encode output here. 
echo json_encode($php_data_array); 

// Transfor PHP array to JavaScript two dimensional array 
echo "<script>
        var my_2d = ".json_encode($php_data_array)."
</script>";
?>

<div id="curve_chart"></div>

这是我网站上的样子:

所以这基本上是对用户进行分组,并计算每个用户的销售额。 X轴是显示用户名,Y轴是销售总数。

我想改变这一点,所以在 X asix 中显示月份,而 Y asix 显示销售总数。我怎样才能做到这一点?

编辑:哈瓦一直在尝试一些,但无法使其发挥作用。这是我到目前为止所得到的:

if($stmt = $link->query("
SELECT YEAR(date) 
as SalesYear,
MONTH(date) as SalesMonth,
COUNT(*) AS TotalSales
FROM sales
GROUP BY YEAR(date), MONTH(date)
ORDER BY YEAR(date), MONTH(date)
AND COUNT(*) DESC
")){

【问题讨论】:

  • 有人可以帮帮我吗?

标签: php sql


【解决方案1】:

如果您有一年以上的时间,则需要按年月组合进行分组。然后把这个查询改成这个。

SELECT CONCAT(YEAR(date),'-' MONTHNAME(date)) as ym,  COUNT(*)  FROM sales GROUP BY ym ORDER BY count(*) DESC 

【讨论】:

  • 那条线没有给我任何价值,但这条线看起来很有效:SELECT MONTHNAME(date),COUNT(*) FROM sales WHERE YEAR(date) = YEAR(NOW()) GROUP BY MONTH(date) order by MONTH(date) ASC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多