【问题标题】:How to select the maximum occurring string from a list of lists?如何从列表列表中选择最大出现的字符串?
【发布时间】:2018-12-15 09:59:57
【问题描述】:

在我的数据库中,我有一个表。

statement= """create table itags(
                tag_id number(10) not null primary key,
                tag_name varchar2(50) 
                )"""
cur.execute(statement)
cur.execute("INSERT INTO itags VALUES(301,'Art')")
cur.execute("INSERT INTO itags VALUES(302,'Science')")
cur.execute("INSERT INTO itags VALUES(303,'Music')")
...
so on and so forth
...

现在我想选择并打印出现频率最高的标签名称。

如果我这样做:

cur.execute("select tag_name from itags")
res= cur.fetchall()
print(res)

我将获得一个包含我存储在该表中的标记名称的元组列表。 前任: [(艺术,),(科学,),(音乐,),....]

现在我应该如何从这个元组列表中提取出现次数最多的字符串?另外,SQL 命令会比 python 代码更有帮助吗?

【问题讨论】:

  • 数据汇总最好在数据层完成。想一想,如果您必须在本地处理 1000 万条记录,则必须在本地传输数据然后进行汇总。如果您将工作推送到数据库,则数据已经存在并且可以“汇总”发送 1 条记录的数据。不仅您的用户会更快乐,您的网络管理员也会更快乐。所以 SQL 命令会比 python 代码更有帮助。

标签: sql python-3.x select oracle11g cx-oracle


【解决方案1】:

Oracle 通过stats_mode 为您完成所有繁重的工作:

SELECT STATS_MODE(tag_name) FROM itags

【讨论】:

  • 感谢您的帮助。请告诉我从哪里可以了解这些 oracle 和 sql 函数?
  • 可以从Oracle的SQL reference开始
  • 或者直接点击上方stats_mode链接左侧导航功能前的+号。
猜你喜欢
  • 1970-01-01
  • 2021-10-24
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多