PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

แนวทางคำสั่ง sql หาผลรวมในชุดรายการข้อมูลเรียงตามวันที่

09 June 2016 By


เนื้อหาต่อไปนี้เป็นแนวทาง การหาผลรวมข้อมูลในชุดข้อมูลในรูปแบบต่างๆ 
โดยสามารถนำไปประยุกต์เพิ่มเติมได้

 
ตารางชุดข้อมูลตัวอย่าง

--
-- Table structure for table `tbl_date`
--

CREATE TABLE `tbl_date` (
  `date_id` int(11) NOT NULL,
  `date_day` date NOT NULL,
  `date_val` int(11) NOT NULL,
  `date_val2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tbl_date`
--

INSERT INTO `tbl_date` (`date_id`, `date_day`, `date_val`, `date_val2`) VALUES
(1, '2016-06-01', 2, 3),
(2, '2016-06-01', 3, 1),
(3, '2016-06-01', 4, 7),
(4, '2016-06-03', 4, 1),
(5, '2016-06-03', 5, 2),
(6, '2016-06-03', 2, 2),
(7, '2016-06-03', 6, 3);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_date`
--
ALTER TABLE `tbl_date`
  ADD PRIMARY KEY (`date_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_date`
--
ALTER TABLE `tbl_date`
  MODIFY `date_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;


ตารางข้อมูลตัวอย่าง



# date_day date_val date_val2
1 2016-06-01 2 3
2 2016-06-01 3 1
3 2016-06-01 4 7
4 2016-06-03 4 1
5 2016-06-03 5 2
6 2016-06-03 2 2
7 2016-06-03 6 3





1. รูปแบบการรวมแบบ แสดงค่ารวมสะสม 



# Date Day Date Val Date Val2 aggre sum val aggre sum val2
1 2016-06-01 2 3 2 3
2 2016-06-01 3 1 5 4
3 2016-06-01 4 7 9 11
4 2016-06-03 4 1 4 1
5 2016-06-03 5 2 9 3
6 2016-06-03 2 2 11 5
7 2016-06-03 6 3 17 8



รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้

        <table class="table table-bordered">
            <tr>
              <th>#</th>
              <th>Date Day</th>
              <th>Date Val</th>
              <th>Date Val2</th>    
              <th>aggre sum val</th>                       
              <th>aggre sum val2</th>              
            </tr>
<?php  
$i=1;  
$q="  
SELECT *
FROM tbl_date ORDER BY date_day ASC
";  
$result = $mysqli->query($q); // ทำการ query คำสั่ง sql   
$total=$result->num_rows;  // นับจำนวนถวที่แสดง ทั้งหมด  
while($row=$result->fetch_array()){ // วนลูปแสดงข้อมูล  
        $dateKey=date("dmY",strtotime($row['date_day']));   
		$row_span=0;
        if(!isset($aggr_arr[$dateKey])){  
            $aggr_arr[$dateKey]=array();  
			$aggr_arr[$dateKey]['val']=array();
			$aggr_arr[$dateKey]['val2']=array();
        }  
		$aggr_arr[$dateKey]['val'][]=$row['date_val'];
		$aggr_arr[$dateKey]['val2'][]=$row['date_val2'];
?>  
            <tr>  
                <td><?=$i?></td>  
                <td><?=$row['date_day']?></td>
                <td><?=$row['date_val']?></td>
                <td><?=$row['date_val2']?></td>
                <td><?=array_sum($aggr_arr[$dateKey]['val'])?></td>
                <td><?=array_sum($aggr_arr[$dateKey]['val2'])?></td>                                                                        
            </tr>  
<?php $i++; } ?>              
        </table>  

2. รูปแบบการรวมแบบ แสดงค่ารวมตามชุดข้อมูลวันที่ 




# Date Day Date Val Date Val2 Num Sum val Sum val2
1 2016-06-01 2 3 3 9 11
2 2016-06-01 3 1 3 9 11
3 2016-06-01 4 7 3 9 11
4 2016-06-03 4 1 4 17 8
5 2016-06-03 5 2 4 17 8
6 2016-06-03 2 2 4 17 8
7 2016-06-03 6 3 4 17 8



รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้

        <table class="table table-bordered">
            <tr>
              <th>#</th>
              <th>Date Day</th>
              <th>Date Val</th>
              <th>Date Val2</th>
              <th>Num </th>        
              <th>Sum val</th>                       
              <th>Sum val2</th>              
            </tr>
<?php  
$i=1;  
$q="  
SELECT a.*,
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2
FROM tbl_date a ORDER BY a.date_day ASC
";  
$result = $mysqli->query($q); // ทำการ query คำสั่ง sql   
$total=$result->num_rows;  // นับจำนวนถวที่แสดง ทั้งหมด  
while($row=$result->fetch_array()){ // วนลูปแสดงข้อมูล  
?>  
            <tr>  
                <td><?=$i?></td>  
                <td><?=$row['date_day']?></td>
                <td><?=$row['date_val']?></td>
                <td><?=$row['date_val2']?></td>
                <td><?=$row['num']?></td>
                <td><?=$row['sumval']?></td>
                <td><?=$row['sumval2']?></td>                                                                                
            </tr>  
<?php $i++; } ?>              
        </table>  

3. รูปแบบการรวมแบบ แสดงค่ารวมตามชุดข้อมูลวันที่ (แสดงข้อมูลรวมแถวเดียว)




# Date Day Date Val Date Val2 Sum val Num Sum val2
1 2016-06-01 2 3 9 3 11
2 2016-06-01 3 1 3
3 2016-06-01 4 7 3
4 2016-06-03 4 1 17 4 8
5 2016-06-03 5 2 4
6 2016-06-03 2 2 4
7 2016-06-03 6 3 4



รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้

        <table class="table table-bordered">
            <tr>
              <th>#</th>
              <th>Date Day</th>
              <th>Date Val</th>
              <th>Date Val2</th>   
              <th>Sum val</th>     
              <th>Num </th>                                     
              <th>Sum val2</th>              
            </tr>
<?php  
$i=1;  
$q="  
SELECT a.*,
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2
FROM tbl_date a ORDER BY a.date_day ASC
";  
$result = $mysqli->query($q); // ทำการ query คำสั่ง sql   
$total=$result->num_rows;  // นับจำนวนถวที่แสดง ทั้งหมด  
$aggr_arr=array();   
while($row=$result->fetch_array()){ // วนลูปแสดงข้อมูล  
        $dateKey=date("dmY",strtotime($row['date_day']));   
		$row_span=0;
        if(!isset($aggr_arr[$dateKey])){  
            $aggr_arr[$dateKey]=array();  
			$row_span=1;
        }  
?>  
            <tr>  
                <td><?=$i?></td>  
                <td><?=$row['date_day']?></td>
                <td><?=$row['date_val']?></td>
                <td><?=$row['date_val2']?></td>
                <?php if($row_span==1){?>
                    <td rowspan="<?=$row['num']?>"><?=$row['sumval']?></td>              
                <?php } ?>
                <td><?=$row['num']?></td>
                <?php if($row_span==1){?>
                    <td rowspan="<?=$row['num']?>"><?=$row['sumval2']?></td>              
                <?php } ?>                                                                          
            </tr>  
<?php $i++; } ?>              
        </table>  


 

Tags:: mysql วันที่ หาผลรวม





URL สำหรับอ้างอิง