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

Откуда:
Сообщений: 523
DeColo®es
Рисуем графики в SQL Server Management Studio

Если в SSMS можно рисовать графики, то можно ли нарисовать диаграмму, например, гистограмму (bar сhart)?

В 16672056 показано, как построить гистограмму в текстовом режиме с помощью звездочек. Но ТЕКСТ - это прошлый век.

Появились пространственные (Spatial) типы данных, которые SSMS может отображать на вкладке "Spatial results" с помощью графических примитивов: точек, линий, многоугольников, ... И все же, мы живем в великую эпоху ТЕКСТА: гипертекст, xml, ... Координаты точек тоже задаются строкой текста.

Зная это приведем запрос, решающий данную задачу.
with barChart as (
  select *
    from (values( 1,  1),
                ( 2,  3),
                ( 3,  5),
                ( 4,  7),
                ( 5, 10),
                ( 6,  9),
                ( 7,  6),
                ( 8,  4),
                ( 9,  2),
                (10,  1)
         ) as T(  n,  x)
)

select n,x
      ,geometry::STGeomFromText('polygon(('
       +cast(0 as varchar)+' '+cast(n   as varchar)+', '
       +cast(0 as varchar)+' '+cast(n+1 as varchar)+', '
       +cast(x as varchar)+' '+cast(n+1 as varchar)+', '
       +cast(x as varchar)+' '+cast(n   as varchar)+', '
       +cast(0 as varchar)+' '+cast(n   as varchar)+'))', 0) as horizontal
from barChart;

В этом запросе barChart представляет табличное представление некоторой гистограммы (способ получения этой таблицы нас в данном случае не интересует), где n - это номер интервала, а x(n) – число элементов выборки некоторого распределения X, попавшим в интервал n.

В основном запросе для каждого интервала рассчитаем координаты прямоугольника (polygon). Нужны пять координат, четыре - для задания углов прямоугольника, а пятая координата должна совпадать с первой, т.е. линия, ограничивающая прямоугольник, должна быть замкнутой.

После его выполнения появляется вкладка "Spatial results" с гистограммой.

А что SQL Server? Он даже не догадался, что его просто использовали для низведения SSMS до уровня рисовалки простых гистограмм.

К сообщению приложен файл. Размер - 43Kb
1 дек 14, 11:30    [16930209]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wlr-l
А что SQL Server? Он даже не догадался, что его просто использовали для низведения SSMS до уровня рисовалки простых гистограмм.

SQL Server вообще всегда было пофиг, что с результатами запроса будет делать клиентское приложение
1 дек 14, 11:39    [16930257]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Wlr-l
Member

Откуда:
Сообщений: 523
А можно так, чтобы столбики располагались вертикально?

Можно, чуть по другому рассчитаем координаты прямоугольников:
with barChart as (
  select *
    from (values( 1,  1),
                ( 2,  3),
                ( 3,  5),
                ( 4,  7),
                ( 5, 10),
                ( 6,  9),
                ( 7,  6),
                ( 8,  4),
                ( 9,  2),
                (10,  1)
         ) as T(  n,  x)
)

select n,x
      ,geometry::STGeomFromText('polygon(('
       +cast(0 as varchar)+' '+cast(n   as varchar)+', '
       +cast(0 as varchar)+' '+cast(n+1 as varchar)+', '
       +cast(x as varchar)+' '+cast(n+1 as varchar)+', '
       +cast(x as varchar)+' '+cast(n   as varchar)+', '
       +cast(0 as varchar)+' '+cast(n   as varchar)+'))', 0) as horizontal
      ,geometry::STGeomFromText('polygon(('
       +cast(n   as varchar)+' '+cast(0 as varchar)+', '
       +cast(n   as varchar)+' '+cast(x as varchar)+', '
       +cast(n+1 as varchar)+' '+cast(x as varchar)+', '
       +cast(n+1 as varchar)+' '+cast(0 as varchar)+', '
       +cast(n   as varchar)+' '+cast(0 as varchar)+'))', 0) as vertical
from barChart;

Выбор вертикального или горизонтального расположения диаграммы осуществляется с помощью выпадающего списка "select spatial column". Выбор меток (n или x) - с помощью "Select label column".

А можно ли в 3D? Нельзя, т. к. тип geometry предназначен для задач планиметрии.

К сообщению приложен файл. Размер - 47Kb
1 дек 14, 11:41    [16930272]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
o-o
Guest
Wlr-l,

+
оставили бы уж горизонтально. а то прям неприличная картинка, удачные значения выбрали, нечего сказать,
или вы специально постарались?
Картинка с другого сайта.
1 дек 14, 11:57    [16930383]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Wlr-l
Member

Откуда:
Сообщений: 523
o-o, когда я увидел ваше сообщение подумал: "Класс!!!, о-о нарисовал 3D-диаграмму!".
Но, раскрыв плюсик, был разочарован - все тоже 2D.
Настоящие мужики должны думать не о мужском, а о женском! Надеюсь следующая диаграмма вам поможет.
+
with barChart as (
  select *
    from (values( 1,  1),
                ( 2,  3),
                ( 3,  5),
                ( 4,  7),
                ( 5, 10),
                ( 6,  9),
                ( 7,  6),
                ( 8,  4),
                ( 9,  2),
                (10,  1)
         ) as T(  n,  x)
)
select n,x
,case n%2
 when 0 then
      geometry::STGeomFromText('polygon(('
       +cast(n   as varchar)+' '+cast(0 as varchar)+', '
       --+cast(n   as varchar)+' '+cast(x as varchar)+', '
       +cast(n+1 as varchar)+' '+cast(x as varchar)+', '
       +cast(n+1 as varchar)+' '+cast(0 as varchar)+', '
       +cast(n   as varchar)+' '+cast(0 as varchar)+'))', 0)
 when 1 then
      geometry::STGeomFromText('polygon(('
       +cast(n   as varchar)+' '+cast(0 as varchar)+', '
       +cast(n   as varchar)+' '+cast(x as varchar)+', '
       --+cast(n+1 as varchar)+' '+cast(x as varchar)+', '
       +cast(n+1 as varchar)+' '+cast(0 as varchar)+', '
       +cast(n   as varchar)+' '+cast(0 as varchar)+'))', 0)
 end as vertical
 
from barChart;


К сообщению приложен файл. Размер - 36Kb
2 дек 14, 10:25    [16935490]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
o-o
Guest
Wlr-l
o-o, когда я увидел ваше сообщение подумал: "Класс!!!, о-о нарисовал 3D-диаграмму!".
Но, раскрыв плюсик, был разочарован - все тоже 2D.
Настоящие мужики должны думать не о мужском, а о женском!

нет, позвольте, это я смотрю вчера на вертикальный вариант и думаю,
неужто сервер прочел ваше
Wlr-l
А что SQL Server? Он даже не догадался, что его просто использовали для низведения SSMS до уровня рисовалки простых гистограмм.

и вот то самое в ответ нарисовал, к вам конкретно обращаясь

а за совет спасибо. кто меня знает, наверное уже пацталом )
2 дек 14, 12:46    [16936649]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Wlr-l
Настоящие мужики должны думать не о мужском, а о женском! Надеюсь следующая диаграмма вам поможет.

И что женского в конкретно вашей последней диаграмме?
Иили ето ежик женского полу ???
2 дек 14, 13:05    [16936825]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
o-o
Guest
+
Maxx,

что б ты понимал в накладных ногтях :)
да и у Wlr-l тоже леопёрдости не хватает и краски скучноваты
Картинка с другого сайта.
2 дек 14, 13:40    [16937162]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Wlr-l
Member

Откуда:
Сообщений: 523
o-o,

Согласен и леопёрдости не хватает и краски скучноваты. Именно по этому 3D не получается!

К сообщению приложен файл. Размер - 8Kb
2 дек 14, 14:20    [16937426]     Ответить | Цитировать Сообщить модератору
 Re: Рисование диаграмм в SSMS  [new]
Wlr-l
Member

Откуда:
Сообщений: 523
Maxx
И что женского в конкретно вашей последней диаграмме?
Иили ето ежик женского полу ???


В различных у нас фантазиях!
2 дек 14, 14:26    [16937475]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить