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