查询表 Queries

    1. +-------------+---------+
    2. | Column Name | Type |
    3. +-------------+---------+
    4. | query_name | varchar |
    5. | result | varchar |
    6. | position | int |
    7. | rating | int |
    8. +-------------+---------+
    9. 此表没有主键,并可能有重复的行。
    10. 此表包含了一些从数据库中收集的查询信息。
    11. “位置”(position)列的值为 1 500
    12. “评分”(rating)列的值为 1 5 。评分小于 3 的查询被定义为质量很差的查询。

    将查询结果的质量 quality 定义为:

    各查询结果的评分与其位置之间比率的平均值。

    将劣质查询百分比 poor_query_percentage 为:

    评分小于 3 的查询结果占全部查询结果的百分比。

    编写一组 SQL 来查找每次查询的名称(query_name)、质量(quality) 和 劣质查询百分比(poor_query_percentage)。

    质量(quality) 和劣质查询百分比(poor_query_percentage) 都应四舍五入到小数点后两位。

    查询结果格式如下所示:
    /

    1. Queries table:
    2. +------------+-------------------+----------+--------+
    3. | query_name | result | position | rating |
    4. +------------+-------------------+----------+--------+
    5. | Dog | Golden Retriever | 1 | 5 |
    6. | Dog | German Shepherd | 2 | 5 |
    7. | Dog | Mule | 200 | 1 |
    8. | Cat | Shirazi | 5 | 2 |
    9. | Cat | Siamese | 3 | 3 |
    10. | Cat | Sphynx | 7 | 4 |
    11. +------------+-------------------+----------+--------+
    12. Result table:
    13. +------------+---------+-----------------------+
    14. | query_name | quality | poor_query_percentage |
    15. +------------+---------+-----------------------+
    16. | Dog | 2.50 | 33.33 |
    17. | Cat | 0.66 | 33.33 |
    18. +------------+---------+-----------------------+
    19. Dog 查询结果的质量为 ((5 / 1) + (5 / 2) + (1 / 200)) / 3 = 2.50
    20. Dog 查询结果的劣质查询百分比为 (1 / 3) * 100 = 33.33
    21. Cat 查询结果的质量为 ((2 / 5) + (3 / 3) + (4 / 7)) / 3 = 0.66
    22. Cat 查询结果的劣质查询百分比为 (1 / 3) * 100 = 33.33
    1. select
    2. query_name,
    3. round(sum(rating/position )/count(*),2) quality ,
    4. round(sum(case
    5. when
    6. rating <3
    7. then
    8. 1
    9. else
    10. 0
    11. end)/count(*)*100,2) poor_query_percentage
    12. from
    13. Queries
    14. group by
    15. query_name