2016-02-21 4 views

ответ

1

Вместо того, чтобы явно думать о диапазонах, вы можете использовать the lpad() function:

select lpad('*', round(your_column/10) '*') from your_table ... 

Это округляет число звезд в nearst целое число, которое, кажется, что вы хотите. Вы можете использовать ceil, floor или trunc, если нет. Если округленное/усеченное значение равно нулю, это вернет значение null.

Например,

select lpad('*', 3, '*') from dual; 

дает

*** 
+0

спасибо! это то, что я искал. – smtsmo

1

Вы можете использовать случай заявление для этого:

SELECT score,case when score between 0 and 15 then '*' 
        when score between 16 and 30 then '**' 
        when score between 31 and 40 then '***' 
      end as 'STARS' 
FROM ScoreTable 

Конечно, вам придется настроить диапазоны для каждой звезды, так как вы не объяснить логику к нам. Кроме того, я использовал * как звезду, и вы можете добавить столько КОГДА, сколько хотите включить все звезды.

+0

Да, решение для решения, которое я знаю, но должен быть более простой способ представить оценку, деленную с 10 и округленную до ближайшей, даже в символах. 1-x, 2-xx, 3-xxx и т. Д. – smtsmo

+0

@smtsmo Case - это простое решение и не займет много времени – sagi

Смежные вопросы