Mysql 通过在单个查询中使用多个组
我有两个查询来获取count=1和count=2的族数Mysql 通过在单个查询中使用多个组,mysql,sql,group-by,Mysql,Sql,Group By,我有两个查询来获取count=1和count=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; 请帮帮我…提前谢谢 SELECT CASE WHEN c <= 1 THEN "<=1"
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;
请帮帮我…提前谢谢
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
您需要将第一个计数放入子查询:
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
您需要将第一个计数放入子查询:
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
我可以在这里指定条件吗?这是在INhere中,例如我指定了1和2。但是我有类似于=2的条件,请看我前面的问题,因为您的表中有12个不同的族,它们每个只有一行。我可以在这里指定条件吗。这是在INhere中,例如,我指定了1和2。但我有类似于=2的条件,请看我前面的问题,因为在您的表中有12个不同的族,它们每个只有一行。