2013-04-04 35 views
0

使用多組我有2個查詢來獲得具有計數= 1家庭和計數= 2通過在單一查詢

SELECT Name, count(*) as c FROM Tablename GROUP BY HOUSE_NO HAVING c<=1; 


SELECT Name, count(*) as c FROM Tablename GROUP BY HOUSE_NO HAVING c>=2 and c<=4; 

,但我需要這些查詢合併成單一query.Like

  count1       count2 
    nooffamiliesHavingcount = 1  nooffamiliesHavingcount = 2 

請幫我....預先感謝..

回答

2

你需要把你的第一個計數爲子查詢:

SELECT COUNT(CASE WHEN C = 1 THEN 1 END) AS nooffamiliesHavingcount1, 
     COUNT(CASE WHEN C = 2 THEN 1 END) AS nooffamiliesHavingcount2 
FROM ( SELECT COUNT(*) AS C 
      FROM TableName 
      GROUP BY House_No 
     ) t 
WHERE c IN (1, 2); 

編輯

如果你需要做的範圍在你的數,您可以使用此:

SELECT COUNT(CASE WHEN C <= 1 THEN 1 END) AS nooffamiliesHavingcount1, 
     COUNT(CASE WHEN C BETWEEN 2 AND 4 THEN 1 END) AS nooffamiliesHavingcount2, 
     COUNT(CASE WHEN C > 4 THEN 1 END) AS nooffamiliesHavingcount3 
FROM ( SELECT COUNT(*) AS C 
      FROM TableName 
      GROUP BY House_No 
     ) t 

Example on SQL Fiddle

+0

can i在這裏指定條件。那就是在IN – PSR 2013-04-04 10:06:24

+0

這裏例如我指定了1和2. – PSR 2013-04-04 10:09:01

+0

但我有像<=1 , > = 2和<= 10的條件,高於10。 – PSR 2013-04-04 10:10:04

2
SELECT CASE WHEN c <= 1 THEN "<=1" 
      WHEN c BETWEEN 2 and 4 THEN "2-4" 
     END familysize, 
     COUNT(*) nooffamilies 
FROM (SELECT Name, count(*) c 
     FROM Tablename 
     GROUP BY Name) x 
GROUP BY familysize 
HAVING familysize IS NOT NULL 

FIDDLE