SQL查询,使用group by和aggegate函数创建具有现有数据操作和操作的新表

2024-09-19 23:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张像下面这样的桌子

month   year    country test    affected    cases
4   2020    A   5   2   4
4   2020    A   57  10  20
4   2020    A   6   3   5
3   2020    A   9   5   7
3   2020    A   0   0   0
3   2020    A   6   2   4
1   2019    A   4   1   3
1   2019    A   2   1   1
4   2020    B   5   2   4
4   2020    B   57  10  20
4   2020    B   6   3   5
3   2020    B   9   5   7
3   2020    B   0   0   0
4   2019    C   6   3   5
1   2019    C   4   1   3

然后我必须做下面的操作

enter image description here

最后我想得到下面的输出

enter image description here

这意味着我必须在一个月内将所有测试值相加,比如4。4指四月。并将4显示为4月,依此类推

我怎样才能做到这一点

我试过下面这个。但是没有成功

     SELECT month, year ,sum(cases/Tests*100%) as caseRate, sum(affected/cases * 100%) as affectedrate ,country FROM csv group by country ,month ,year") 

Tags: csvfromtestastestsselectyearcountry
2条回答

你可以这样试试

    SELECT month
        ,  monthname(str_to_date(MonthNum,'%m')) Monthname
        , year 
        ,country 
        , sum((cases)/sum(Tests))*100 as caseRate
        , sum((affected)/sum(cases))*100 as affectedrate 
    FROM csv
    group by country ,month , Monthname, year

我认为这只是一个聚合查询:

select month, year, country,
      sum(cases) * 100 / sum(test) as case_rate,
      sum(affected) * 100 / sum(cases) as affected_rate
from t
group by month, year, country;

相关问题 更多 >