2012-12-02 16 views
0

我之前有人幫助我,並且已經接近了,我需要從這個查詢中得到前五名「id's」。發生了什麼? ?ID而不是前五名的任何人都知道如何解決這個下面是該查詢:需要這個查詢中的「前五名」id

(
SELECT id, 
    firstName, 
    lastName, 
    SUM(fileSize) AS TotalBytes, 
    SUM(fileSize)/COUNT(*) AS Average 
FROM roster_cs368 AS a 
JOIN htmp_cs368 AS b USING (id) 
) UNION (
SELECT id, 
    firstName, 
    lastName, 
    SUM(fileSize) AS TotalBytes, 
    SUM(fileSize)/COUNT(*) AS Average 
FROM roster_cs368 AS a 
JOIN atmp_cs368 AS b USING (id) 
) 
ORDER BY TotalBytes DESC 
LIMIT 5 

謝謝這也是一個更大的計劃的一部分,因此Java標記

這裏是。模式:

mysql> select * from roster_cs368 
-> ; 
+--------+-----------+-----------+ 
| id  | firstName | lastName | 
+--------+-----------+-----------+ 
| apn7cf | Allen  | Newton | 
| atggg3 | andrew | goebel | 

哪裏是主鍵,

mysql> select * from htmp_cs368; 
+------------+----------+------------+----------+----------+-------+------+-------+----------------------+ 
| filePerms | numLinks | id   | idGroup | fileSize | month | day | time | fileName    | 
+------------+----------+------------+----------+----------+-------+------+-------+----------------------+ 
| drwx------ |  2 | schulte | faculty |  289 | Nov | 7 | 2011 | Java     | 
| -rw-r--r-- |  1 | schulte | faculty |  136 | Apr | 29 | 2012 | LD     | 
| drwxr-xr-x |  3 | schulte | faculty |  177 | Mar | 20 | 2012 | Upgrade    | 

這裏沒有主鍵,

mysql> select * from atmp_cs368; 
+------------+----------+--------------+----------+----------+-------+------+-------+-----------------------------+ 
| filePerms | numLinks | id   | idGroup | fileSize | month | day | time | fileName     | 
+------------+----------+--------------+----------+----------+-------+------+-------+-----------------------------+ 
| drwxr-xr-x |  2 | remierm  | 203  |  245 | Sep | 17 | 14:40 | 148360_sun_studio_12  | 
| drwx---rwx |  31 | antognolij | sasl  |  2315 | Oct | 24 | 12:28 | 275       | 
| -rwx------ |  1 | kyzvdb  | student |  36 | Sep | 19 | 13:05 | 275hh      | 

這裏沒有主鍵。

什麼我的查詢是:

produce a list of the five members of roster_cs368, 
    and their ids who use the most space (number of bytes) 
    in htmp_cs368 and atmp_cs368 in descending order-- 
    greediest first. display total number of bytes and 
    average size of file 
+1

定義TOP 5 ...也許與我們共享的模式,給我們預期的一個例子輸出,什麼是實際輸出等 – Tim

+0

@添加了Tim架構和查詢。 –

回答

0

你可以這樣說:

SELECT * FROM(
(
SELECT id, 
    firstName, 
    lastName, 
    SUM(fileSize) AS TotalBytes, 
    SUM(fileSize)/COUNT(*) AS Average 
FROM roster_cs368 AS a 
JOIN htmp_cs368 AS b USING (id) 
) UNION (
SELECT id, 
    firstName, 
    lastName, 
    SUM(fileSize) AS TotalBytes, 
    SUM(fileSize)/COUNT(*) AS Average 
FROM roster_cs368 AS a 
JOIN atmp_cs368 AS b USING (id) 
) 
) as somealias ORDER BY TotalBytes DESC 
LIMIT 5 
+0

我欣賞這個幫助,但它給了我一個錯誤'你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「FROM( ( SELECT ID, 名字, 姓氏, SUM(檔案大小)AS TotalByt」在行1' –

+0

是它有一個錯誤,我已經用固定版本更新了我的答案,請嘗試。 – Nelson

+0

仍然只獲得1個用戶,然後爲null。我已更新我的原始帖子以包含架構。 –