2017-03-01 30 views
0

我有一個問題,我需要使用連接顯示一些數據。其中一列必須按照「顏色」以及流行度進行分組(因此最常出現的顏色組將顯示爲第一組行等等)。在SQL連接中按熱門程度排序列?

到目前爲止,我已經取得了參加並通過色彩管理,以組吧:

SELECT * FROM tblexample1 
JOIN tblexample2 ON tblexample1.unique_id = tblexample2.unique_id 
ORDER BY colour; 

我只需要獲得人氣舉辦的同色列,是有這樣做的一個簡單的方法?

在此先感謝

+4

幫助我們幫助您 - 共享表格的結構,一些示例數據以及您試圖從此示例中獲得的結果。 – Mureinik

+0

你是什麼意思,「其中一列必須按...分組」 - 你認爲如何將一列**分組,而其他列不是?如果您甚至無法提出有意義的要求,則無法爲您提供幫助。 – mathguy

+2

我敢打賭,他只是想要'ORDER BY color,popular'這樣的東西。 – Sam07

回答

1

也許:

ORDER BY COUNT(*) OVER (PARTITION BY colour) DESC, colour 

這會給你的結果,用最流行的色彩第一。如果你有兩種顏色相同的流行度,那麼你會得到按顏色排序的結果。

+0

這會給你一個語法錯誤。 ORDER BY中不能使用分析函數。 – mathguy

+0

它適用於我的11g數據庫。也許你在考慮WHERE子句。 – DCookie

+0

@mathguy:看看第二段的最後一句:https://docs.oracle.com/cloud/latest/db112/SQLRF/functions004.htm#SQLRF06174 – DCookie

1

如果我沒有理解這個問題吧,我會嘗試這樣的:

SELECT C.colour, T1.F1, T1.F2, T2.F3, T2.F4 
FROM (
    SELECT colour, COUNT(*) as Popularity FROM tblexampl1 
    GROUP BY colour) C 
JOIN tblexampl1 T1 ON C.colour = T1.colour 
JOIN tblexampl2 T2 on T1.unique_id = T2.unique_id 
ORDER BY C.Popularity DESC 

如果甲骨文與您支持可以將子查詢的WITH子句是有點更容易閱讀。