大家好,我希望你能帮我解决一下我想写的SQL查询。我已经实现了我想要的表,但我必须逐行构建它。这样效率不高,当我最终得到200行时,这会减慢网站的速度。
这就是我的表格:
FeedBack Table:
RatingID | RATING| TUTORIAL_ID| TUTORIAL_NAME
5716| 4 | 993| Test002
5717| 3 | 993| Test002
5777| 1 | 994| eClip3
5886| 1 | 994| eClip3
7127| 4 | 1235| FTIR001
7128| 4 | 1235| FTIR001
7169| 3 | 1235| FTIR001
7170| 2 | 1235| FTIR001
7131| 4 | 1235| FTIR001
7187| 3 | 1235| FTIR001
7132| 3 | 1235| FTIR001
我想要制作的是一张包含所有独特教程名称的表格,然后是特定教程评分的总次数;
1(not useful), 2(somewhat useful), 3(useful), 4(Very Useful)
所以查询应该:
Tutorial Name | not Useful | Somewhat Useful| Useful| Very Useful
Test002| 0| 0|1|1
eClip3|2|0|0|0
FTIR001| 0| 1| 3| 3
该表格显示在C#后面的网页上。目前我循环遍历表格,找到各个教程名称的列表,然后为每个剪辑名称选择Count(*),其中rating = 1等。并逐行构建表格。
我真正想知道的是,是否有办法立即完成所有这些工作。这将极大地提高网站的效率,因为有200多个教程我想要显示数据。
答案 0 :(得分:1)
select tutorial_name,
sum(case when rating=1 then 1 else 0 end) "not Useful",
sum(case when rating=2 then 1 else 0 end) "Somewhat Useful",
sum(case when rating=3 then 1 else 0 end) "Useful",
sum(case when rating=4 then 1 else 0 end) "Very Useful"
from feedback
group by tutorial_name;
是您需要的查询。