По-моему, желательно быть максимально явным. Это добавляет ясность к коду и помогает Вашим коллегам - программистам, которые могут в конечном счете считать его.
В дополнение к (или вместо) добавление .0
к числу, можно использовать decimal.ToDouble()
.
Вот некоторые примеры:
// Example 1
double transperancy = trackBar1.Value/5000;
this.Opacity = decimal.ToDouble(transperancy);
// Example 2 - with inline temp
this.Opacity = decimal.ToDouble(trackBar1.Value/5000);
Используйте «Разделить по» в функции ранжирования предложение OVER
SELECT
Rank() over (Partition by Category Order by Value, User, Category) as ranks,
Category, User
FROM
Table1
Group By
User, Category, Value
Order by
ranks asc
Select User, Category,
(Select Count(*) From Table
Where Category = A.Category
And Value <= A.Value) Rank
From Table A
Order By Category, Value
Если Value может иметь дубликаты, затем вы должны решить, хотите ли вы «подсчитывать» дубли (эквивалент RANK) или нет (эквивалент DENSE_RANK, thanx @shannon)
Обычный ранг:
Select User, Category,
(Select 1 + Count(*) From Table -- "1 +" gives 1-based rank,
Where Category = A.Category -- take it out to get 0-based rank
And Value < A.Value) Rank
From Table A
Order By Category, Value
«Плотный» ранг:
Select User, Category,
(Select 1 + Count(Distinct Value) -- "1 +" gives 1-based rank,
From Table -- take it out to get 0-based rank
Where Category = A.Category
And Value < A.Value) Rank
From Table A
Order By Category, Value