[英]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 by
与case
语句一起使用:
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.