首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带聚合的sql聚合

不带聚合的sql聚合
EN

Stack Overflow用户
提问于 2015-12-04 08:39:52
回答 4查看 22关注 0票数 0

我尝试将Summoner表中名为SummonerName的列插入到Order表中。

它给我一个错误,说SummonerName是非聚合的。

我想让它像下面这样显示:

代码语言:javascript
复制
SummonerID OCC
94         5
1          4

至:

代码语言:javascript
复制
SummonerName SummonerID OCC
Paul         94         5
George       1          4

任何帮助都将不胜感激。

代码语言:javascript
复制
SELECT s.SummonerName, o.SummonerID, COUNT(o.SummonerID) AS 'OCC'    
FROM Orders AS o    
JOIN Summoner AS s    
    ON o.SummonerID = s.SummonerID    
GROUP BY o.SummonerID    
ORDER BY OCC;
EN

回答 4

Stack Overflow用户

发布于 2015-12-04 08:45:49

您需要按您选择的所有非聚合进行分组:

代码语言:javascript
复制
SELECT s.SummonerName, o.SummonerID, COUNT(o.SummonerID) AS 'OCC'    
FROM Orders AS o    
JOIN Summoner AS s    
    ON o.SummonerID = s.SummonerID    
GROUP BY o.SummonerID, s.SummonerName 
ORDER BY OCC;

或者添加一个窗口函数并删除您的group by

代码语言:javascript
复制
SELECT s.SummonerName, o.SummonerID, COUNT(o.SummonerID) over (partition by o.SummonerID)  AS 'OCC' 
FROM Orders AS o    
JOIN Summoner AS s    
    ON o.SummonerID = s.SummonerID    
ORDER BY OCC;
票数 1
EN

Stack Overflow用户

发布于 2015-12-04 08:45:43

因为使用SQL时,GROUP BY中未列出的每个选定列都必须应用聚合函数。某些SQL server (如MySQL )不强制执行此操作,而是以静默方式选择一个值。您应该将SummonerName添加到GROUP BY,或者将聚合函数(如MIN或MAX )添加到选择字段列表中的SummonerName列。

票数 0
EN

Stack Overflow用户

发布于 2015-12-04 08:49:56

与使用GROUP BY o.summonerID的方式一样,新的“召唤师姓名”列必须是计算的结果(如MIN或MAX),或者位于GROUP BY子句中。

将o.SummonerName添加到GROUP by子句可能会得到您想要的结果:

代码语言:javascript
复制
SELECT s.SummonerName, o.SummonerID, COUNT(o.SummonerID) AS 'OCC'    
  FROM Orders AS o    
  JOIN Summoner AS s ON o.SummonerID = s.SummonerID    
  GROUP BY s.SummonerName, o.SummonerID    
  ORDER BY OCC;

如果由于某些原因无法执行此操作,则可以将计算设为子选择,如下所示:

代码语言:javascript
复制
SELECT s.SummonerName, s.SummonerID, (SELECT COUNT(*) FROM Orders where SummonerID = s.SummonerID) AS 'OCC'    
  FROM Orders AS o     
  ORDER BY OCC;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34078971

复制
相关文章

相似问题

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