簡體   English   中英

如何按月將每行的總行數和用戶名相加

[英]How to sum total row each month group by month and user name

我每個月都有一張銷售記錄表。 在這種情況下,每個推銷員都有自己的代碼bdnk

MySQL的

select sale_plc
      , month(sale_date) as mon
      , sum(sale_cost) as cost 
from daily_sales 
 where year(sale_date)='2016' 
group 
    by year(sale_date)
      , month(sale_date)
      , sale_plc 
order 
    by month(sale_date)
      , sale_plc asc 
 LIMIT 0, 30

查詢后我得到了這個結果:

id  mon cost
bd  1   224787
nk  1   721102
bd  2   440399
nk  2   898020
bd  3   363543
nk  3   878250

  • id =銷售員代碼(sale_plc)
  • 星期一 =月號
  • 成本 =此ID的本月總銷售額。

根據結果​​。 我希望結果像這樣的數組。 排列

(
    [1] => Array
        (
            [mon] => 1
            [bd] => 224787
            [nk] => 721102
        )
    [2] => Array
        (
            [mon] => 2
            [bd] => 440399
            [nk] => 898020
        )
    [3] => Array
        (
            [mon] => 3
            [bd] => 363543
            [nk] => 878250
        )
    )

我知道這與sale_plc 我需要制作數組,但我不知道這樣做。

我沒有SQL輸出,所以我創建一個數組並使用與我為您的數組相同的功能創建自己的代碼。

PHP

$arr = array(array("id" => "bd", "mon" => "1", "cost" => "224787"),
            array("id" => "nk", "mon" => "1", "cost" => "721102"),
            array("id" => "bd", "mon" => "2", "cost" => "440399"),
            array("id" => "nk", "mon" => "2", "cost" => "898020"),
            array("id" => "bd", "mon" => "3", "cost" => "363543"),
            array("id" => "nk", "mon" => "3", "cost" => "878250"),
            );

$output_arr = array();      
$tmp = 0;
foreach($arr as $key => $value){
    if($tmp == 0 || $tmp != $value['mon'])
        $output_arr[$value['mon']][mon] = $value['mon'];
    if($value['id'] == 'bd')
        $output_arr[$value['mon']][$value['id']] = $value['cost'];
    if($value['id'] == 'nk')
        $output_arr[$value['mon']][$value['id']] = $value['cost'];
    $tmp = $value['mon'];
}
echo "<pre>";
print_r($output_arr);
echo "</pre>";

產量

Array
(
    [1] => Array
        (
            [mon] => 1
            [bd] => 224787
            [nk] => 721102
        )

    [2] => Array
        (
            [mon] => 2
            [bd] => 440399
            [nk] => 898020
        )

    [3] => Array
        (
            [mon] => 3
            [bd] => 363543
            [nk] => 878250
        )

)

我已經回答了你的SQL輸出。 給出SQL的示例。

PHP

$output_arr = array();
//Your sql
$sql = "select sale_plc
      , month(sale_date) as mon
      , sum(sale_cost) as cost 
from daily_sales 
 where year(sale_date)='2016' 
group 
    by year(sale_date)
      , month(sale_date)
      , sale_plc 
order 
    by month(sale_date)
      , sale_plc asc 
 LIMIT 0, 30";
$tmp = 0;
$i = 0;
$qry = mysqli_query($conn, $sql);
while ($obj = mysqli_fetch_object($qry )){
    if($tmp == 0 || $tmp != $obj->mon)
        $output_arr[$obj->mon][mon] = $obj->mon;
    if($obj->id == 'bd')
        $output_arr[$obj->mon][$obj->id] = $obj->cost;
    if($obj->id == 'nk')
        $output_arr[$obj->mon][$obj->id] = $obj->cost;
    $tmp = $obj->mon;
}

print_r($output_arr);

輸出:

Array(
[1] => Array
    (
        [mon] => 1
        [bd] => 224787
        [nk] => 721102
    )
[2] => Array
    (
        [mon] => 2
        [bd] => 440399
        [nk] => 898020
    )
[3] => Array
    (
        [mon] => 3
        [bd] => 363543
        [nk] => 878250
    )
)

試試這個答案,如果有任何問題,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM