เนื้อหาต่อไปนี้เป็นแนวทาง การหาผลรวมข้อมูลในชุดข้อมูลในรูปแบบต่างๆ
โดยสามารถนำไปประยุกต์เพิ่มเติมได้
ตารางข้อมูลตัวอย่าง
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
ตารางชุดข้อมูลตัวอย่าง
-- -- 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>