  | 
              
	              
	                
  
    
	 
        สอบถามเกี่ยวกับ SQL หาจำนวนงานของพนักงาน 4 คนครับ ต้องเขียนยังไงให้ได้รูปแบบนี้     | 
   
  
    |   | 
   
 
 
 
	
		
			  | 
	   | 
	    | 
		
			  | 
	 
	
		
			  | 
		 		   | 
	  	    
          
            
			
	
			
			 
                  
 
จากรูป ในฐานข้อมูลมีพนักงาน 4 คน อยากรู้ว่าจะเขียน SQL คำนวณว่าแต่ละคนมีจำนวนงานเท่าไหร่ครับ 
 
เงื่อนไขคือ 
- ถ้า job_type เป็น 6 ให้นับเป็นแค่ 1 งานของพนักงานคนนั้น ไม่ว่าจะมีกี่เรคคอร์ดก็ตาม 
- ถ้า job_type เป็น 2 นับทุกเรคคอร์ด 
 
แล้วเอาค่าที่ได้จาก job_type ทั้ง 2 มาบวกกัน เอาคนที่ได้เยอะสุดแค่ 3 คน อยากรู้ว่าจะเขียน SQL ยังไงให้ได้ตามกรอบสีส้ม   
 
 
 
ฐานข้อมูลครับ 
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Generation Time: Mar 12, 2014 at 01:12 PM
-- Server version: 5.0.51
-- PHP Version: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-- 
-- Database: `test`
-- 
-- --------------------------------------------------------
-- 
-- Table structure for table `job`
-- 
CREATE TABLE `job` (
  `id` int(11) NOT NULL auto_increment,
  `job_emp` varchar(4) NOT NULL,
  `customer` varchar(3) NOT NULL,
  `job_type` varchar(2) NOT NULL,
  `job_date` datetime NOT NULL,
  `job_detail` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
-- 
-- Dumping data for table `job`
-- 
INSERT INTO `job` VALUES (1, 'emp1', '001', '2', '2014-03-01 16:23:12', 'gjhfghguy');
INSERT INTO `job` VALUES (2, 'emp2', '004', '2', '2014-03-01 16:23:36', 'hrtdrch');
INSERT INTO `job` VALUES (3, 'emp1', '001', '6', '2014-03-01 16:24:21', 'gjftft');
INSERT INTO `job` VALUES (4, 'emp4', '002', '2', '2014-03-02 16:24:38', '');
INSERT INTO `job` VALUES (5, 'emp1', '002', '2', '2014-03-03 16:25:41', '');
INSERT INTO `job` VALUES (6, 'emp2', '003', '6', '2014-03-03 16:25:49', '');
INSERT INTO `job` VALUES (7, 'emp3', '002', '2', '2014-03-03 16:25:41', '');
INSERT INTO `job` VALUES (8, 'emp1', '002', '2', '2014-03-03 16:25:49', '');
INSERT INTO `job` VALUES (9, 'emp4', '001', '2', '2014-03-03 16:25:41', '');
INSERT INTO `job` VALUES (10, 'emp2', '003', '6', '2014-03-03 16:25:49', '');
INSERT INTO `job` VALUES (11, 'emp3', '002', '6', '2014-03-04 16:27:12', '');
INSERT INTO `job` VALUES (12, 'emp1', '004', '2', '2014-03-05 16:27:23', '');
INSERT INTO `job` VALUES (13, 'emp4', '004', '6', '2014-03-04 16:27:12', '');
INSERT INTO `job` VALUES (14, 'emp3', '001', '2', '2014-03-05 16:27:23', '');
INSERT INTO `job` VALUES (15, 'emp4', '001', '2', '2014-03-04 16:27:12', '');
INSERT INTO `job` VALUES (16, 'emp4', '001', '2', '2014-03-05 16:27:23', '');
 
 
 
  Tag : PHP, MySQL               
                        | 
           
          
            | 
			
                             | 
           
          
            
              
                   | 
                   | 
                   | 
               
              
                   | 
                
                    
                      | Date :
                          2014-03-12 13:23:58 | 
                      By :
                          giverplus | 
                      View :
                          1267 | 
                      Reply :
                          4 | 
                     
                  | 
                   | 
               
              
                   | 
                   | 
                   | 
               
              | 
           
          
            | 
			 | 
           
         
	    
		             | 
		
			  | 
	 
	
		
			  | 
		  | 
		
			  | 
		
			  | 
	 
 
              
  
          
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (SQL) 
SELECT `job_emp`, SUM(`cnt2`) AS 'job_type 2', SUM(`cnt6`) AS 'job_type 6', SUM(`cnt2`)+SUM(`cnt6`) AS 'type2+type6' FROM (SELECT `job_emp`,`job_type`,IF(`job_type`= 6, 1, 0) AS 'cnt6', IF(`job_type`=2, ขอลบออก ให้ลองคิดดูว่ามันควรเป็นอะไร, 0) AS 'ขอลบออก ให้ลองคิดดูว่ามันควรเป็นอะไร' FROM `job` GROUP BY  `job_emp`,`job_type`) AS `c` GROUP BY `job_emp` ORDER BY `type2+type6` DESC LIMIT 0,3
  
U0VMRUNUIGBqb2JfZW1wYCwgU1VNKGBjbnQyYCkgQVMgJ2pvYl90eXBlIDInLCBTVU0oY 
GNudDZgKSBBUyAnam9iX3R5cGUgNicsIFNVTShgY250MmApK1NVTShgY250NmA 
pIEFTICd0eXBlMit0eXBlNicgRlJPTSAoU0VMRUNUIGBqb2JfZW1wYCxgam9iX3R5cGVgLElGKGBqb2JfdHlwZWA 
9IDYsIDEsIDApIEFTICdjbnQ2JywgSUYoYGpvYl90eXBlYD0yLCBDT1VO 
VCgqKSwgMCkgQVMgJ2NudDInIEZST00gYGpvYmAgR1JPVVAgQlkgIGBqb2JfZW1wYCxgam9iX3R5cGVg 
KSBBUyBgY2AgR1JPVVAgQlkgYGpvYl9lbXBgIE9SREVSIEJZIGB0eXBlMit0e 
XBlNmAgREVTQyBMSU1JVCAwLDM=                        
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2014-03-12 13:54:17 2014-03-12 13:54:36 2014-03-12 13:55:18 2014-03-12 13:56:30 2014-03-12 13:57:10 2014-03-12 13:57:36              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-12 13:52:10 | 
                        By :
                            itpcc | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (SQL) 
SELECT `job_emp`, SUM(`cnt2`) AS 'job_type 2', SUM(`cnt6`) AS 'job_type 6', SUM(`cnt2`)+SUM(`cnt6`) AS 'type2+type6' 
FROM (SELECT `job_emp`,`job_type`,IF(`job_type`= 6, 1, 0) AS 'cnt6', IF(`job_type`=2, 1, 0) AS 'cnt2' FROM `job` GROUP BY  `job_emp`,`job_type`) AS `c` GROUP BY `job_emp` ORDER BY `type2+type6` DESC LIMIT 0,3
  
 
มันได้ผลลัพธ์แบบนี้ครับ ไม่เข้าใจ IF() ตัวเลข 2 หลักหลังคืออะไรครับ   
                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-12 14:38:26 | 
                        By :
                            giverplus | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 IF(เงื่อนไข, ค่าที่ได้เมื่อจริง, ค่าที่ได้เมื่อไม่จริง) 
เฉลยฮะ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-12 15:38:54 | 
                        By :
                            itpcc | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ขอบคุณครับ ได้ล่ะๆ                          
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2014-03-12 15:46:33 | 
                        By :
                            giverplus | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |