基本上我拥有的是一个评级系统。 4 个类别 1-5 星。我想做的是统计每个类别的结果。例如:
Category 1: 20 1 star, 32 2 star, 40 3 star, 35 4 star, 19 5 star
...
Category 4: 10 1 star, 12 2 star, 45 3 star, 54 4 star, 2 5 star
我知道我只能执行 20 个查询,(SELECT COUNT(*) WHERE BizID=$id AND Category1=1
/SELECT COUNT(*) WHERE BizID=$id AND category1=2
...),但我想知道是否有更有效的方法。看起来如果我有大量的点击量,或者有大量的收视率,剧本在这一点上就会陷入困境。任何帮助将不胜感激。
Table Structure
RateID - int(10)
UserID - varchar(8)
BizID - varchar(8)
Cat1 - int(1)
Cat2 - int(1)
Cat3 - int(1)
Cat4 - int(1)
Date - int(10)
最佳答案
您可以使用 CASE 语句一次性获取按类别和星级评分的计数,如下所示:
SELECT
SUM
(
CASE
WHEN Cat1 = 1 THEN 1
ELSE 0
END
) Cat1_1,
SUM
(
CASE
WHEN Cat1 = 2 THEN 1
ELSE 0
END
) Cat1_2,
SUM
(
CASE
WHEN Cat1 = 3 THEN 1
ELSE 0
END
) Cat1_3,
SUM
(
CASE
WHEN Cat1 = 4 THEN 1
ELSE 0
END
) Cat1_4,
SUM
(
CASE
WHEN Cat1 = 5 THEN 1
ELSE 0
END
) Cat1_5,
SUM
(
CASE
WHEN Cat2 = 1 THEN 1
ELSE 0
END
) Cat2_1,
...
...
...
FROM mytable
WHERE BizID=$id;
关于php - 统计MySQL查询中的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691202/