Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор цветов для графика  [new]
__Avenger__
Member

Откуда:
Сообщений: 1984
Добрый день!

Помогите придумать функцию выбора цветов для графика. Входной параметр @RowId. Т.е. функция для одного и того же RowId, должна возвращать всегда один цвет.

	DECLARE @A TABLE (A VARCHAR(2))
	INSERT INTO @A(A) VALUES('00'),('33'),('66'),('99'),('CC'),('FF')

	SELECT t.*
	FROM (
		SELECT t.Color, RowId = ROW_NUMBER() OVER(ORDER BY t.GroupId, t.Color)
		FROM (
			SELECT t.Color, GroupId = ROW_NUMBER() OVER(PARTITION BY t.GroupId ORDER BY t.Color)
			FROM (
				SELECT Color = a.A + b.A + c.A, GroupId = NTILE(36) OVER (ORDER BY 1/0)
				FROM @A a
				CROSS JOIN @A b 
				CROSS JOIN @A c 
			) t
		)t
	) t
	--WHERE t.RowId = @RowId
20 дек 18, 09:58    [21769187]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
__Avenger__,

в реляционных базах нет понятия "Номер строки", но есть понятие "значение ключа".
20 дек 18, 12:49    [21769391]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
__Avenger__
Member

Откуда:
Сообщений: 1984
Владислав Колосов
__Avenger__,

в реляционных базах нет понятия "Номер строки", но есть понятие "значение ключа".


RowId - суррогатный ключ. У меня при выборе 10 первых цветов всегда градиент получается, а хочется разброса цветов
20 дек 18, 12:51    [21769393]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
__Avenger__,

сортируйте по newid(), получите разный порядок при новом запросе.
20 дек 18, 13:14    [21769442]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4386
__Avenger__,

Чего-то я не вкурю, чем вам не устраивает прямолинейное решение?

	DECLARE @A TABLE (A VARCHAR(2))
	INSERT INTO @A(A) VALUES('00'),('33'),('66'),('99'),('CC'),('FF')

	SELECT Color = a.A + b.A + c.A, RowId = ROW_NUMBER() OVER(ORDER BY a.A + b.A + c.A)
	FROM @A a
	CROSS JOIN @A b 
	CROSS JOIN @A c 


	SELECT Color = a.A + b.A + c.A, RowId = ROW_NUMBER() OVER(ORDER BY a.A, b.A, c.A)
	FROM @A a
	CROSS JOIN @A b 
	CROSS JOIN @A c 

 
20 дек 18, 13:39    [21769479]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
архивариус
Member

Откуда:
Сообщений: 149
__Avenger__,


для графика попробуйте эти 12 цветов (не будут сливаться друг с другом на экране)

DECLARE @rgb table (rgb varchar(6))
INSERT INTO @rgb(rgb) VALUES('A6CEE3'),('1F78B4'),('B2DF8A'),('33A02C'),('FB9A99'),('E31A1C'),('FDBF6F'),('FF7F00'),('CAB2D6'),('6A3D9A'),('FFFF99'),('B15928')
SELECT * FROM @rgb
20 дек 18, 13:59    [21769519]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
архивариус
Member

Откуда:
Сообщений: 149
архивариус,

https://beta.observablehq.com/@mbostock/d3-color-schemes
схема paired
20 дек 18, 14:08    [21769542]     Ответить | Цитировать Сообщить модератору
 Re: Выбор цветов для графика  [new]
__Avenger__
Member

Откуда:
Сообщений: 1984
архивариус,


Спасибо. Интересная ссылка...

Я не знаю сколько цветов мне понадобится для графика. Пока ограничился 30-ю. Надеюсь, что хватит.
20 дек 18, 23:07    [21770138]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить