2010-03-16 19 views
3

在MySQL中我有一個表稱爲 「含義」 有三列:如何獲得MySQL的前三名頻率?

  • 「人」(INT),
  • 「字」(字節,16倍可能的值)
  • 「意思是」(字節,26個可能的值)。

一個人的一個或多個的含義分配給每個

person word meaning 
------------------- 
1  1 4 
1  2 19 
1  2 7 <-- Note: second meaning for word 2 
1  3 5 
... 
1  16 2 

然後其他人,等等。將有成千上萬的人。

我需要爲16個單詞中的每一個找出前三個含義(以及它們的頻率)。喜歡的東西:

+--------+-----------------+------------------+-----------------+ 
| Word | 1st Most Ranked | 2nd Most Ranked | 3rd Most Ranked | 
+--------+-----------------+------------------+-----------------+ 
| 1  | meaning 5 (35%) | meaning 19 (22%) | meaning 2 (13%) | 
| 2  | meaning 8 (57%) | meaning 1 (18%) | meaning 22 (7%) | 
+--------+-----------------+------------------+-----------------+ 

...

是否有可能有一個MySQL查詢到解決這個問題?

回答

0

當然,你可以做

SELECT * FROM words WHERE word = 2 ORDER BY meaning DESC LIMIT 3 

但是,這是欺騙,因爲你需要創建一個循環。 我正在尋求更好的解決方案

+0

確實,我正在尋找單一查詢解決方案...... – Amenhotep 2010-03-17 14:45:04

1

好吧,如果你按照單詞和含義分組,你可以很容易地從數據集中得到使用每個單詞/含義組合的人的百分比。

爲了限制返回的每個單詞的含義數,您需要爲每個單詞/含義組合創建某種過濾器。

好像你只是想你的作業的答案,所以我不會發布比這更多,但這應該足以讓你在正確的軌道上。

+0

對於第一部分,Google如何進行頻率分佈查詢。對於第二部分,請將頻率分佈查詢與您的過濾器查詢結合起來。 – 2010-03-16 21:34:02

+0

+1作業(?) – 2010-03-16 22:09:01

0

注意這個問題

讓我們假設只有一個人,誰說:

+--------+----------------+ 
| Person | Word | Meaning | 
+--------+----------------+ 
| 1  | 1 | 7  | 
| 1  | 1 | 3  | 
| 1  | 2 | 8  | 
+--------+----------------+ 

報告應閱讀:

+--------+------------------+------------------+-----------------+ 
| Word | 1st Most Ranked | 2nd Most Ranked | 3rd Most Ranked | 
+--------+------------------+------------------+-----------------+ 
| 1  | meaning 7 (100%) | meaning 3 (100%) | NULL   | 
| 2  | meaning 8 (100%) | NULL    | NULL   | 
+--------+------------------+------------------+-----------------+ 

以下是不正常( 50%頻率在一個人口中是荒謬的):

+--------+------------------+------------------+-----------------+ 
| Word | 1st Most Ranked | 2nd Most Ranked | 3rd Most Ranked | 
+--------+------------------+------------------+-----------------+ 
| 1  | meaning 7 (50%) | meaning 3 (50%) | NULL   | 
| 2  | meaning 8 (100%) | NULL    | NULL   | 
+--------+------------------+------------------+-----------------+ 

頻率的預期含義是「有多少人認爲這個含義對應於該詞」?

所以這不僅僅是計算「案例」,而是要計算表中