简体   繁体   English

SQL查询,如何以行格式显示结果?

[英]SQL Query ,How to show result in row wise format?

Hello guys I have a sql query that finds sum of columns between some ranges. 大家好,我有一个SQL查询,该查询查找某些范围之间的列总和。 The query is below 查询如下

select sum(case when rating_value between 0 and 1.9 then 1 end) as Poor, sum(case when rating_value between 2 and 2.9 then 1 end) as Average, sum(case when rating_value between 3 and 3.9 then 1 end) as Good, sum(case when rating_value between 4 and 5 then 1 end) as Very_Good from rating

which outputs like this 像这样输出

poor | good | verygood | average 39 | 131 | 231 | 552

But i want output like this 但是我想要这样的输出

Rating |  Count or Value
-----------------------
Poor        31
Good        21
Average     552
very good   231

Hoping for a positive reply 希望得到积极的答复

Use group by with a case statement: group bycase语句一起使用:

select (case when rating_value between 0 and 1.9 then 'Poor'
             when rating_value between 2 and 2.9 then 'Average'
             when rating_value between 3 and 3.9 then 'Good'
             when rating_value between 4 and 5 then 'Very_Good'
        end) as grp, count(*)
from rating
group by grp
order by min(rating_value);

Use this.. 用这个..

select 
(case when rating_value between 0 and 1.9 then 'Poor' 
case when rating_value between 2 and 2.9 then  'Average'
case when rating_value between 3 and 3.9 then 'Good'
case when rating_value between 4 and 5 then 'Very_Good'
end) as rate, count(*) AS cnt
from rating
group by rate
order by cnt

You can use UNPIVOT as below 您可以如下使用UNPIVOT

SELECT Rating,Value FROM(

select 10  as Poor,20 as Average,45 as Good,15 as Very_Good /*Your Query*/

) AA
UNPIVOT
(Value FOR Rating IN ([Poor],[Average],[Good],[Very_Good])) BB

The same as previous answers, just not using between to make the code with less letters :) 与以前的答案相同,只是不使用之间使字母更少的代码:)

SELECT
    ( CASE WHEN rating_value < 2 THEN 'Poor'
           WHEN rating_value < 3 THEN 'Average'
           WHEN rating_value < 4 THEN 'Good'
           WHEN rating_value <= 5 THEN 'Very_Good'
      END ) AS rate ,
    COUNT(*)
FROM
    rating
GROUP BY
    grp
ORDER BY
    1;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM