2016-09-29 12 views
6

मैं समूह MIN() और SQL में AVG() समारोह करना चाहते हैं, वह है,एसक्यूएल कार्यों को समूहबद्ध करने का कोई तरीका है?

  • MIN(AVG(column_name))
  • या ऐसा ही कुछ।

क्या समूह बनाने का कोई तरीका है?

मैं इस कोशिश की:

SELECT 
     `instructer`.`dept_name`, AVG(`instructer`.`salary`) 
AS 
     MinAvgSalary 
FROM 
     `instructer` 
GROUP BY 
     `instructer`.`dept_name` 
HAVING 
     AVG(`instructer`.`salary`) = (SELECT MIN(AVG(`instructer`.`salary`)) FROM `instructer` GROUP BY `instructer`.`dept_name`) 

लेकिन MySQL ने कहा: -:

Enter image description here

1111 समूह समारोह

का अमान्य उपयोग यह मेरा प्रशिक्षक तालिका है

उत्तर

1

आप पिछले क्वेरी में LIMIT 1 उपयोग करने के लिए एक subselect का उपयोग कर सकते

select t.dept_name, min(t.AvgSalary) AS MinAvgSalary 
from (
    SELECT 
    `instructer`.`dept_name` AS dept_name 
    , AVG(`instructer`.`salary`) AS  AvgSalary 
    FROM `instructer` 
    GROUP BY `instructer`.`dept_name`) t 
GROUP BY t.dept_name 
HAVING t.AvgSalary = min(t.AvgSalary) 
1

प्रयास करें:

SELECT 
     `instructer`.`dept_name`, AVG(`instructer`.`salary`) 
AS 
     MinAvgSalary 
FROM 
     `instructer` 
GROUP BY 
     `instructer`.`dept_name` 
HAVING 
     AVG(`instructer`.`salary`) = 
    (SELECT AVG(`instructer`.`salary`) as AvgSalary 
     FROM `instructer` 
     GROUP BY `instructer`.`dept_name` 
     ORDER BY AvgSalary LIMIT 1) 
0

मामले में दूसरों से काम नहीं करते, मैं इस लंबा सफर तय किया है। दो औसत वेतन सारणी (एवी 1, एवी 2) बनाएं जो प्रत्येक विभाग के औसत वेतन को पकड़ें। फिर एक नई तालिका (न्यूनतम 1) में av1 में न्यूनतम वेतन का चयन करें। फिर वेतन पर min1 से av2 में शामिल हों। आप न्यूनतम वेतन है कि AV2 में रिकॉर्ड खोजना चाहिए और तुम वहाँ के रूप में अच्छी से विभाग नाम खींच कर सकते हैं:

SELECT av2.dept_name, av2.avsal 
FROM 
(SELECT MIN(avsal) as minsal 
FROM 
(SELECT dept_name, AVG(salary) as avsal 
    FROM instructor 
    GROUP BY dept_name) av1) min1 
INNER JOIN 
(SELECT dept_name, AVG(salary) as avsal 
FROM instructor 
GROUP BY dept_name) av2 
ON min1.minsal = av2.avsal 

यहाँ परीक्षण किया गया: http://sqlfiddle.com/#!9/77b0ac

संबंधित मुद्दे

 संबंधित मुद्दे