2015-04-19 42 views
-5

我創建瞭如下表:SQL:高級SQL問題

INSERT INTO ForgeRock 
    ([productName], [description],grade) 
VALUES 
    ('OpenIDM', 'Platform for building enterprise provisioning solutions',10), 
    ('OpenAM', 'Full-featured access management',20), 
    ('OpenDJ', 'Robust LDAP server for Java',30), 
    ('OpenDJ', 'Robust LDAP server for Java',40), 
    ('OpenDJ', 'Robust LDAP server for Java',50), 
    ('OpenDJ', 'Robust LDAP server for Java',60), 
    ('OpenDJ', 'Robust LDAP server for Java',70); 

我希望選擇的結果集,例如:

1     90-100 
3     80-90 
2     70-80 
. 
. 
. 
3     10-20 
3     0-10 

我怎樣才能做到這一點?我已經創建了fiddle供您測試。

回答

3
SELECT SUM(studenttotal) , 
     grade 
FROM (SELECT COUNT(productName) studenttotal , 
       CASE WHEN grade BETWEEN 91 AND 100 THEN '91-100' 
        WHEN grade BETWEEN 81 AND 90 THEN '81-90' 
        WHEN grade BETWEEN 71 AND 80 THEN '71-80' 
        WHEN grade BETWEEN 61 AND 70 THEN '61-70' 
        WHEN grade BETWEEN 51 AND 60 THEN '51-60' 
        WHEN grade BETWEEN 41 AND 50 THEN '41-50' 
        WHEN grade BETWEEN 31 AND 40 THEN '31-40' 
        WHEN grade BETWEEN 21 AND 30 THEN '21-30' 
        WHEN grade BETWEEN 11 AND 20 THEN '11-20' 
        WHEN grade BETWEEN 1 AND 10 THEN '1-10' 
       END AS grade 
     FROM  ForgeRock 
     GROUP BY grade 
    ) a 
GROUP BY grade 
ORDER BY grade DESC 
+0

啊,將你的範圍改變到你以後的範圍,對不起!去0-10,然後10-20會計10次兩次,所以要小心! – LordBaconPants