You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL查询语句:计算期刊历年发文量平均值

问题描述

我的数据库包含journal_title、article_title、publish_year三个字段。我已经写出了如下SQL查询语句并得到对应结果:

SELECT journal_title, publish_year, COUNT(article_title) AS total_article 
FROM dumm_table 
GROUP BY journal_title, publish_year 
ORDER BY journal_title, publish_year

(结果截图:结果截图)

现在需要编写SQL查询,计算单本期刊历年发文量的平均值。示例:

  • 期刊"Biophysical chemistry"在9年(1991、1992、1994、1995、1996、1997、1998、1999、2007)共发文315篇,平均值为315/9=35;
  • 期刊"Biophysical journal"在2年(2006、2007)共发文54篇,平均值为54/2=27。

请帮忙编写对应SQL查询语句,感谢!

解决方案

你可以基于已有的分组查询结果,通过嵌套查询或CTE来计算每本期刊的总发文量和有发文记录的年份数,进而得到平均值。以下是两种实用写法:

写法一:嵌套子查询

SELECT 
    journal_title,
    SUM(total_article) AS total_all_articles,
    COUNT(DISTINCT publish_year) AS total_years,
    ROUND(SUM(total_article) / COUNT(DISTINCT publish_year), 2) AS avg_articles_per_year
FROM (
    -- 复用你已有的按期刊+年份分组的查询
    SELECT 
        journal_title,
        publish_year,
        COUNT(article_title) AS total_article 
    FROM dumm_table 
    GROUP BY journal_title, publish_year
) AS yearly_article_counts
GROUP BY journal_title
ORDER BY journal_title;

写法二:CTE公共表表达式(可读性更高)

WITH yearly_article_counts AS (
    -- 先得到每本期刊每年的发文量
    SELECT 
        journal_title,
        publish_year,
        COUNT(article_title) AS total_article 
    FROM dumm_table 
    GROUP BY journal_title, publish_year
)
SELECT 
    journal_title,
    SUM(total_article) AS total_all_articles,
    COUNT(DISTINCT publish_year) AS total_years,
    ROUND(SUM(total_article) / COUNT(DISTINCT publish_year), 2) AS avg_articles_per_year
FROM yearly_article_counts
GROUP BY journal_title
ORDER BY journal_title;

关键说明:

  • 内层查询/CTE部分就是你已经写好的逻辑,先按期刊和年份分组得到每年的发文量;
  • 外层查询按期刊分组,SUM(total_article)计算该期刊的总发文量,COUNT(DISTINCT publish_year)统计该期刊有发文的年份数(和你示例中的统计逻辑一致,只算有发文的年份);
  • ROUND(..., 2)用于将平均值保留两位小数,你可以根据需求调整小数位数,或者去掉该函数保留原始精度;
  • 最终结果会按期刊名称排序,方便查看。

内容的提问来源于stack exchange,提问作者Parvej Chowdhury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:45:58