2017-06-07 7 views
0

他のすべてのメンバーの平均以上のメンバーのリストを表示したいとします。私のテーブルには、次のようになります。ここではクエリ内の他の列と平均を表示

CREATE TABLE Members 
(
    MemberID nvarchar(50) NOT NULL PRIMARY KEY, 
    MemberName nvarchar(50) NOT NULL, 
    MemberAddress nvarchar(50), 
    MemberContact int, 
    MemberAge int, 
    RegistrationDate nvarchar(50) 
); 


--Inserting Values into Members' Table-- 
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate) 
VALUES ('MEM01', 'Muhammed Abdul', 'Damansara','01121565987', '34', '20/02/2017'); 
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate) 
VALUES ('MEM02', 'Kyle Franklin', 'Kuala Lumpur','01725445807','36', '10/04/2017'); 
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate) 
VALUES ('MEM03', 'Albert Derio', 'Shah Alam','01800235613','56','6/03/2017'); 
INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate) 
VALUES ('MEM04', 'Khaled Ahmad', 'Penang','01602144956','33','9/01/2017'); 

は、私がこれまで試したものですませんが、運:

SELECT MemberID, MemberName, MemberAge,FROM Members 
(SELECT AVG(Members.MemberAge) AS AverageAge) 
WHERE MemberAge>=AverageAge 

答えて

0
SELECT 
    Members.*, 
    (SELECT AVG(MemberAge) FROM Members) AS AverageAge 
FROM 
    Members 
WHERE 
    MemberAge > (SELECT AVG(MemberAge) FROM Members) 

...これは新しいAverageAge列に重複したデータになりますけれども

MySQLは暗黙の変数宣言を持っています(fを必要とするT-SQLと異なります)口頭宣言)ので、これを行うことができます:

-- 1. Get the average-age value: 
SELECT @averageAge = AVG(MemberAge) FROM Members; 

-- 2. Return the average-age value to the database client as a scalar value: 
SELECT @averageAge; 

-- 3. Query for Members whose age is above-average in a second batch result: 
SELECT 
    Members.* 
FROM 
    Members 
WHERE 
    MemberAge > @averageAge 
+0

ありがとうございます!それを修正した –

関連する問題