我最近在一次采访中被问到这个问题:你有一个SQL表,其中包含一个列text
,其中每行包含多个由空格分隔的单词。您将如何编写 SQL 查询以按单词在表中出现的频率对单词进行排序?
作为SQL的初学者,至少可以说我被难住了。我可以通过Python脚本想到一个简单的解决方案。所以我向他提出了这个建议,但面试官想要一个纯粹使用 SQL 的解决方案,指出他们经常需要不断对实时流数据进行如此快速的分析,并且频繁进行数据转储,将它们加载到 Python 中,然后进行分析是矫枉过正的。
我真的没有太多在生产环境中处理大量数据的经验,所以有人能告诉我面试官的推理是否合理吗?你会如何解决这个问题?
毫无疑问,我写了一本名为"使用SQL和Excel的数据分析"的书,并在哥伦比亚大学教授一门名为"使用SQL和关系数据库的数据分析"的课程。显然,使用关系数据库可以完成大量的分析和良好的分析。
文本分析绝对处于可以完成的边缘。由单词组成的字符串不是传统的关系数据,数据库也没有很好的字符串处理功能。大多数数据库都有某种方法可以将此类数据转换为倒排索引(Bob Kaufman在评论中恰当地描述了这一点)。但是,如果你必须处理标点符号、单词形式和同义词,那就变得复杂得多——更不用说情感分析、消除歧义等等了。
我怀疑面试官问的是你对数据库的了解和文本分析的了解,而不是特定的解决方案("将列拆分为倒排索引并使用它。创建倒排索引的方式取决于数据库。这是一种查看您是否真正理解这两个主题的方法。