2016-03-01 70 views
1

SQL n00b在這裏。所以我有一個像如何將一列分組並按另一列排序?

GO 
CREATE PROCEDURE GetSectionAverages 
    @partner_id UNIQUEIDENTIFIER, 
    @survey_id INT 
AS 
    BEGIN 
     SELECT S.title AS section_title, AVG(A.val) AS answer_average 
     FROM 
      Sections AS S INNER JOIN Subsections AS SS ON S.Id=SS.section_id 
          INNER JOIN Questions AS Q ON SS.id=Q.subsection_id 
          LEFT OUTER JOIN Answers AS A ON A.question_id=Q.id 
          INNER JOIN Partners AS P ON A.partner_id=P.id 
      WHERE [email protected]_id AND [email protected]_id 
      GROUP BY S.title 
    END 
GO 

,但過程與結果怎麼返回我希望他們通過Sections表的id列排序,我無法弄清楚如何做到這一點。因此,換句話說,如果部分是像

id | title 
-------------- 
1 | "Banana" 
2 | "Apple" 
3 | "Melon" 

那麼結果將是

"Banana" | 69.2 
"Apple" | 15.0 
"Melon" | 99.9 

相反,我想要的結果顯示按字母順序排列的標題像

"Apple" | 15.0 
"Banana" | 69.2 
"Melon" | 99.9 

我我已經試過在ORDER BY條款中加入條款,但是我得到的錯誤是因爲我不知道把它們放在哪裏,當我進行分組時。

+0

非常漂亮貼出的問題。好框架。 upvote從我身邊 – mohan111

回答

3

你基本上有兩種選擇。您可以包括在GROUP BY的ID:

GROUP BY S.title, S.id 
ORDER BY S.id 

或者您可以使用在ORDER BY聚合函數:

GROUP BY S.title 
ORDER BY MIN(S.id) 
+0

不知道有可能通過兩個不同的列進行分組 –

相關問題