PL / SQL查询效率提高

时间:2014-10-29 11:29:02

标签: c# sql plsql

大家好,我希望你能帮我解决一下我想写的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多个教程我想要显示数据。

1 个答案:

答案 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;

是您需要的查询。