เนื้อหาต่อไปนี้เป็นแนวทาง การหาผลรวมข้อมูลในชุดข้อมูลในรูปแบบต่างๆ
โดยสามารถนำไปประยุกต์เพิ่มเติมได้
ตารางข้อมูลตัวอย่าง
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
รูปแบบโค้ดคำสั่ง php และ sql ที่ใช้
ตารางชุดข้อมูลตัวอย่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | -- -- 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 ที่ใช้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <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 ที่ใช้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <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 ที่ใช้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <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> |