我想要一個結果集從表如下:從計算列平均值
我試着查詢:
select sdate, sum(PG)/sum(PT)*100 AS Score, avg(score) as Mean from table
,但我沒有得到正確的意思。
意思是:所有分數的總和/總分數。
我想顯示平均值爲計算列。在上述結果集中,總得分爲309,除以4(總行數)得到77.25。
我想顯示結果集中顯示的結果。
我想要一個結果集從表如下:從計算列平均值
我試着查詢:
select sdate, sum(PG)/sum(PT)*100 AS Score, avg(score) as Mean from table
,但我沒有得到正確的意思。
意思是:所有分數的總和/總分數。
我想顯示平均值爲計算列。在上述結果集中,總得分爲309,除以4(總行數)得到77.25。
我想顯示結果集中顯示的結果。
我相信你正在尋找的東西像這將是很好:
SELECT sdate,
SUM(PG)/SUM(PT)*100 AS Score,
(SELECT AVG(score) FROM table) AS Mean
FROM table
這應該將平均值設置爲整個表的平均得分。如果您有WHERE
子句進行過濾,則必須將它們放在子查詢和主查詢中。
編輯
如果原來的SQL語句具有GROUP BY
,因爲它聽起來像它,那麼你可以使用下面的查詢,實現你在找什麼:
SELECT sdate,
SUM(PG)/SUM(PT)*100 AS score,
(SELECT AVG(score)
FROM (SELECT CAST(SUM(PG)/SUM(PT)*100 AS FLOAT) AS score
FROM table
GROUP BY sdate) scores) AS Mean
FROM table
GROUP BY sdate
這不是很好,但我相信它會完成你正在尋找的東西。
我認爲這會爲你
工作,你需要表現出平均每行中,我使用子查詢生成的,每次平均。
create table mean
(
d date,
score int
)
insert into mean values ('01/01/2013',50),('02/01/2013',60)
,('03/01/2013',40),('04/01/2013',30)
,('05/01/2013',20),('06/01/2013',20)
SELECT d,score,(select sum(score)/count(*) from mean) from mean
,但如果算上平均第一和使用該變量在SELECT語句
SELECT d,score,
ISNULL((select CONVERT(DECIMAL(10,2),CONVERT(DECIMAL(10,2),sum(score))/count(*)) from @mean) ,0) as mean from @mean
我試着添加如上所述的子查詢,但它不會在子查詢中識別別名「Score」。 – RKh
啊。沒有點擊那兩個分數是相同的。如果我正確理解了表結構,那麼它看起來像是有一個「GROUP BY Date」發生,並且您正在按日期計算得分。如果是這種情況,我會更新查詢以利用該邏輯。 – cmptrgeekken