当我想对多列使用聚合函数时,我不知道自己的选择。
SELECT DISTINCT b.bankname, b.city, a.robberydate
FROM banks b, accomplices a
WHERE a.city = 'Chicago' and b.city ='Chicago' and b.bankname = a.bankname;
到目前为止,这是我的查询。
在 accomplices 表中,有一个 'shares' 列,其中包含强盗获得的股份。我想获得每次抢劫的平均份额。
当我尝试使用 AVG(shares) 时,它说我需要将所选列设置为 GROUPED BY 或聚合函数的一部分。
SELECT DISTINCT b.bankname, b.city, a.robberydate, AVG(shares)
FROM banks b, accomplices a
WHERE a.city = 'Chicago' and b.city ='Chicago' and b.bankname = a.bankname;
解决此类问题的常用方法有哪些?
最佳答案
按您希望唯一的列进行分组,并对您希望显示的其余列使用聚合函数
SELECT b.bankname, b.city, a.robberydate, AVG(shares)
FROM banks b
join accomplices a on b.bankname = a.bankname
WHERE a.city = 'Chicago' and b.city ='Chicago'
group by b.bankname, b.city, a.robberydate
关于sql - 使用具有多个投影的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25325734/