ساخت نمودار میلهای ساده با کد SQL Server: نمایش بصری دادهها
در حالی که ابزارهای زیادی برای ایجاد نمودارها و گرافها و همچنین سرویسهای گزارشگیری در دسترس هستند، گاهی اوقات لازم است دادهها را به سرعت و مستقیماً در SQL Server نمایش بصری دهید، شاید برای یک گزارش موقت یا یک بررسی ساده از دادهها. این مقاله نشان میدهد چگونه یک نمودار میلهای پایه را با استفاده از T-SQL خالص ایجاد کنید. این روش از توابعی مانند REPLICATE و CHAR استفاده میکند و به رندرینگ سمت کلاینت یا راهحلهای پیچیده گزارشگیری وابسته نیست.
ایجاد یک نمودار میلهای پایه در SQL Server
بیایید با یک مثال ساده شروع کنیم. ما از برخی دادههای نمونه استفاده کرده و سپس نمودار میلهای خود را میسازیم. تابع کلیدی در اینجا REPLICATE است. این تابع به ما امکان میدهد یک کاراکتر را به تعداد مشخصی تکرار کنیم. ما از کاراکتر `|` (پایپ) برای رسم میلههای نمودار استفاده خواهیم کرد.
CREATE TABLE #SalesData (
Category VARCHAR(50),
TotalSales INT
);
INSERT INTO #SalesData (Category, TotalSales) VALUES
('Electronics', 120),
('Clothing', 80),
('Home Goods', 150),
('Books', 60),
('Beauty', 90);
حالا، بیایید این دادهها را انتخاب کرده و با استفاده از تابع REPLICATE، نمودار میلهای را تولید کنیم.
SELECT
Category,
TotalSales,
REPLICATE('|', TotalSales / 5) AS BarChart
FROM
#SalesData
ORDER BY
TotalSales DESC;
این کوئری یک نمودار میلهای متنی ساده تولید میکند که در آن طول کاراکترهای پایپ نشاندهنده `TotalSales` برای هر دستهبندی است. ما `TotalSales` را بر ۵ تقسیم میکنیم تا اطمینان حاصل شود که میلهها به خوبی در خروجی کنسول استاندارد جای میگیرند و نمودار برای خوانایی بهتر مقیاسبندی میشود.
افزودن درصدها به نمودار میلهای
برای اینکه نمودار میلهای ما اطلاعات کاملتری داشته باشد، میتوانیم درصد فروش هر دستهبندی را نسبت به کل فروش اضافه کنیم. این کار مستلزم محاسبه کل فروش در ابتدا و سپس استفاده از آن مقدار برای تعیین سهم هر دستهبندی است. ما از یک عبارت جدول مشترک (CTE) یا یک زیرکوئری برای این منظور استفاده خواهیم کرد.
WITH SalesWithPercentage AS (
SELECT
Category,
TotalSales,
CAST(TotalSales * 100.0 / SUM(TotalSales) OVER () AS DECIMAL(5, 2)) AS Percentage
FROM
#SalesData
)
SELECT
Category,
TotalSales,
Percentage,
REPLICATE('|', CAST(Percentage / 2 AS INT)) AS BarChart
FROM
SalesWithPercentage
ORDER BY
TotalSales DESC;
در این کوئری پیشرفته، درصد هر دستهبندی را با استفاده از یک CTE محاسبه میکنیم. تابع پنجرهای SUM(TotalSales) OVER () مجموع کل فروش را در تمام دستهبندیها محاسبه میکند. سپس از این Percentage برای تعیین طول BarChart استفاده میکنیم و آن را بر ۲ تقسیم میکنیم تا مقیاسبندی مناسبی داشته باشد، که نمودار میلهای SQL Server را پویاتر و پر اطلاعاتتر میکند.
افزودن برچسبها و قالببندی برای خوانایی بهتر
اگرچه مثالهای قبلی کار میکنند، اما خروجی کاملاً تراز نیست و ممکن است بخواهیم برچسبهای توصیفیتری اضافه کنیم. میتوانیم از توابع SPACE و LEFT یا RIGHT برای قالببندی خروجی خود برای خوانایی بهتر استفاده کنیم و یک نمایش شبهگرافیکی را مستقیماً در خروجی SQL خود ایجاد نماییم. این رویکرد به ویژه برای SQL Server و نمودارهای میلهای متنی مفید است.
WITH SalesWithPercentage AS (
SELECT
Category,
TotalSales,
CAST(TotalSales * 100.0 / SUM(TotalSales) OVER () AS DECIMAL(5, 2)) AS Percentage
FROM
#SalesData
)
SELECT
LEFT(Category + SPACE(20), 20) AS CategoryName, -- Pad Category to 20 chars
RIGHT(SPACE(5) + CAST(TotalSales AS VARCHAR(10)), 5) AS SalesAmount, -- Right align sales
RIGHT(SPACE(6) + CAST(Percentage AS VARCHAR(10)) + '%', 6) AS PercentOfTotal, -- Right align percentage
REPLICATE('|', CAST(Percentage / 2 AS INT)) AS BarChartVisual
FROM
SalesWithPercentage
ORDER BY
TotalSales DESC;
این کوئری نهایی خروجی بسیار تمیزتر و تراز شدهای ارائه میدهد که خواندن و تفسیر بصری دادههای SQL Server شما را با استفاده از توابع ساده T-SQL آسانتر میکند. استفاده از توابع LEFT و RIGHT به همراه SPACE برای ایجاد عرض ستونهای یکنواخت و تراز کردن متن جهت ارائه یک نمودار میلهای منظم و حرفهای مستقیماً در خروجی SQL بسیار مهم است. این تکنیکهای SQL Server برای نمایش دادهها و گزارشگیری متنی کاربرد فراوانی دارند.
DROP TABLE #SalesData;
پس از اتمام کار، با اجرای این دستور، جدول موقت ایجاد شده پاک میشود.