我試圖在按周分組后獲得列的平均值。
這是我原來的桌子
| ID | 星期 | 數量 | div |
|---|---|---|---|
| 1 | 5 | 50 | 5 |
| 2 | 5 | 40 | 3 |
| 3 | 4 | 35 | 3 |
| 4 | 4 | 60 | 10 |
| 5 | 6 | 70 | 9 |
首先,我想按周對它們求和,然后除以數量/div
| 星期 | 數量 | div | 數量/格 |
|---|---|---|---|
| 5 | 90 | 8 | 11.25 |
| 4 | 95 | 13 | 7.30 |
| 6 | 70 | 9 | 7.77 |
現在得到數量/div的平均值,即 (11.25 7.3 7.77)/3 = 8.77
我只想得到 8.77
這是我嘗試過的:
SELECT AVG(amount/ div) from mytable GROUP BY week
但我沒有得到想要的結果 8.77
uj5u.com熱心網友回復:
制作的樣本資料庫。
http://sqlfiddle.com/#!9/6c7fa7/9
用于FLOOR匹配您的值 11.25、7.3、7.77,通常 ROUND(...,2) 有 1 美分的差異。
CREATE TABLE stats (
id INT PRIMARY KEY AUTO_INCREMENT,
week INT,
amount INT,
divs INT
);
INSERT INTO stats ( week, amount, divs ) VALUES ( 5, 50, 5 );
INSERT INTO stats ( week, amount, divs ) VALUES ( 5, 40, 3 );
INSERT INTO stats ( week, amount, divs ) VALUES ( 4, 35, 3 );
INSERT INTO stats ( week, amount, divs ) VALUES ( 4, 60, 10 );
INSERT INTO stats ( week, amount, divs ) VALUES ( 6, 70, 9 );
SELECT ROUND(AVG(amount_divs), 2)
FROM (
SELECT FLOOR(100* SUM(amount)/SUM(divs))/100 AS amount_divs
FROM stats
GROUP BY week
) x
如果您運行以下查詢
SELECT AVG(amount/divs)
FROM stats
它有不同的含義,它是所有記錄(5 個值)的平均值,而不是后面的 3 個 SUM
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318723.html
標籤:mysql
