首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Group时将列名与内置函数混合

在使用Group时将列名与内置函数混合
EN

Stack Overflow用户
提问于 2020-06-10 01:57:24
回答 1查看 52关注 0票数 0

我在SQLite中构建了一个关系数据库来存储世界各国和地区的冠状病毒数据。数据库模式如下:

国家(名称、Population)

  • DemographicData (农村名称*、AgeGroup、性别、病例、死亡)、Hospitalisations)

  • CountryData (国家名称*、日期、DailyNewCases、DailyNewDeaths、CumulativeCases、CumulativeDeaths、CumulativeRecoveries)

  • Region (农村名称*、RegionName、Description)

  • RegionData (地区名称*)、日期、DailyNewCases、DailyNewDeaths、CumulativeCases、CumulativeDeaths、CumulativeRecoveries)

)

主键加下划线。外键用星号(*)表示。

我编写了以下代码,以显示按国家分列的每百万人口死亡人数:

代码语言:javascript
复制
SELECT CountryName, 
       MAX(CumulativeDeaths) AS ConfirmedDeaths,
       (ConfirmedDeaths*1000000/Population) AS DeathsPerMillion
FROM Country c
     INNER JOIN CountryData d ON (c.Name=d.CountryName)
GROUP BY d.CountryName

当我在SQLite中执行查询时,它返回了错误消息:“没有这样的列:已确认死亡”。为什么它会返回这样的错误信息?如何修正这个错误以获得我想要达到的目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 01:58:49

对,是这样。不能在定义列别名的同一个select中重用它(也不能在fromwhere中使用)。

计算简单。所以重复一遍:

代码语言:javascript
复制
SELECT CountryName, 
       MAX(CumulativeDeaths) AS ConfirmedDeaths,
       (MAX(CumulativeDeaths)*1000000/Population) AS DeathsPerMillion
FROM Country c INNER JOIN
     CountryData d
     ON c.Name = d.CountryName
GROUP BY d.CountryName, Population;

请注意,您也是指Population中的SELECT。它应该是GROUP BY的一部分。或者是聚合函数(如MAX()SUM() )的参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62294640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档