在 MySQL 中,我有一个名为“meanings”的表,其中包含三列:
- “人”(整数),
- “单词”(字节,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 查询来解决这个问题?
最佳答案
好吧,如果您按单词和含义分组,您可以轻松地从数据集中获得使用每个单词/含义组合的人的百分比。
为了限制返回的每个单词的含义数量,您需要为每个单词/含义组合创建某种过滤器。
看来你只是想要作业的答案,所以我不会发布更多内容,但这应该足以让你走上正轨。
关于sql - 如何获得 MySQL 中的前 3 个频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458119/