SQL平均分组包括在表中

时间:2016-07-19 19:55:19

标签: sql sql-order-by average

我有下表

Type  Group     Price
1        A      600.00
2        A      800.00
3        B      300.00
4        B      300.00
5        B      400.00
6        A      200.00

我想使用SQL查询显示带有输出的Group的计算平均值如下所示。

Type  Group     Price          Average By Group
1        A      600.00             533.333
2        A      800.00             533.333
3        B      300.00             333.333
4        B      300.00             333.333
5        B      400.00             333.333
6        A      200.00             533.333

如果有人可以在SQL中帮助我,我真的很感激。

2 个答案:

答案 0 :(得分:0)

我并不总是最擅长提高效率,并且通过观察它我觉得有一种更好的方法可以做到这一点,但在此之前,你应该可以使用......

 SELECT *, (SELECT AVG(Price) FROM averageTest t2 WHERE t2.[Group] = t.[Group] GROUP BY t2.[Group]) as GroupAverage FROM averageTest t

答案 1 :(得分:0)

大多数数据库都支持ANSI标准窗口函数。这些确切地解决了你的问题:

@Override
public void mousePressed(MouseEvent e)
{
    checkPopup(e); // triggers the popup event under Linux but not under Windows
}

@Override
public void mouseReleased(MouseEvent e)
{
    checkPopup(e); // triggers the popup event under Windows but not under Linux
}

private void checkPopup(MouseEvent e)
{
    if (e.isPopupTrigger())
    {
        // do something
    }
}

注意:select t.*, avg(price) over (partition by group) as average_by_group from t; 是SQL中的关键字,因此不应将其用作列名。一般来说,除非使用数据库的相应转义字符(通常是双引号工作)进行转义,否则它甚至不会被识别。