iT邦幫忙

0

mysql 如何取前2筆加總欄位值呢?

mysql資料庫
Table: Student

序號, 名字, 年齡
00001, 張三, 16
00002, 李四, 13
00003, 王二, 15

要如何依年齡大排到小, 然後取前2筆資料, 年齡相加呢? (期望結果: 張三和王二年齡加總)
select sum(年齡) from Student order by 年齡 desc limit 2
但是程式會將所有人的年齡相加, limit 2似乎不起作用, 該怎麼寫呢?

2 個回答

5
dexingadm
iT邦新手 5 級 ‧ 2020-11-24 15:59:02
最佳解答
SELECT 
    SUM(o.年齡)
FROM
    (SELECT 
        `年齡`
    FROM
        `Student`
    ORDER BY `年齡` DESC
    LIMIT 2) AS o;

SQL語法有優先順序,LIMIT算後面執行所以會碰到這問題,之前被坑過一次。

5
japhenchen
iT邦大師 1 級 ‧ 2020-11-24 16:10:14

再select一次就得了
Schema (MySQL v8.0)

CREATE TABLE test (
  id int NOT NULL AUTO_INCREMENT ,
  name varchar(50),
  age int ,
  PRIMARY KEY (id)
);
INSERT INTO test (name,age) VALUE ('張三',45) ;
INSERT INTO test (name,age) VALUE ('李四',50) ;
INSERT INTO test (name,age) VALUE ('小王',24) ;
INSERT INTO test (name,age) VALUE ('老許',54) ;

Query #1

SELECT sum(age) FROM 
(SELECT AGE FROM test ORDER BY AGE LIMIT 2) as AGE;
sum(age)
69

View on DB Fiddle

回慢了一步,哈

不過英熊所見略同,從結果集裡抓加總就對了

我要發表回答

立即登入回答