无法将复合SQLquery写入Oracle数据库

无法将复合SQLquery写入Oracle数据库,sql,database,oracle,Sql,Database,Oracle,请帮我整理一下请求: 开发一个查询,以计算每个作者编写的新闻数量以及引用作者新闻的最流行标签。所有这些信息必须在一个结果集中输出。 我写了请求的第一部分,它显示了每个作者的新闻量: SELECT news_author.author_id AS "Author ID", COUNT(*) AS "Amount of news" FROM news JOIN news_author ON id = news_author.news_id JOIN news_tag ON id = news_ta

请帮我整理一下请求: 开发一个查询,以计算每个作者编写的新闻数量以及引用作者新闻的最流行标签。所有这些信息必须在一个结果集中输出。

我写了请求的第一部分,它显示了每个作者的新闻量:

SELECT news_author.author_id AS "Author ID", COUNT(*) AS "Amount of news"
FROM news
JOIN news_author ON id = news_author.news_id 
JOIN news_tag ON id = news_tag.news_id
GROUP BY news_author.author_id
ORDER BY news_author.author_id;
请告诉我如何请求最流行的标签,参考作者新闻,并将这两个示例合并到一个结果集中

您可以使用标准ANSI SQL功能或Oracle SQL附加功能

表格方案见附件


最流行的标签在统计中有一个名称,称为模式。Oracle有一个聚合函数来计算它。因此,您可以使用:

SELECT na.author_id AS "Author ID",
       COUNT(DISTINCT n.id) AS num_news,
       STATS_MODE(nt.tag_id)
FROM news n JOIN
     news_author na
     ON n.id = na.news_id JOIN
     news_tag nt
     ON n.id = nt.news_id
GROUP BY na.author_id
ORDER BY na.author_id;

BIGINT
在Oracle中不是有效的数据类型。您实际使用的是什么数据库?很抱歉造成混淆。这是一个培训项目,该方案是在主数据库为PostgreSQL时开发的。当然,现在我使用
编号
类型作为ID。