تحلیل دادههای مالی در سپیدار با استفاده از کوئریهای پیشرفته SQL Server
در تحلیل دادههای مالی نرمافزار سپیدار، نخستین و اساسیترین گام، شناخت دقیق ساختار دیتابیس آن است. دیتابیس سپیدار در محیط SQL Server پیادهسازی شده و شامل تعداد زیادی جدول، نما (View)، کلیدهای اصلی (Primary Key) و خارجی (Foreign Key) است که دادههای حسابداری، مالی، فروش، دریافت و پرداخت را ذخیره میکند.
مهمترین جداول دیتابیس سپیدار
از مهمترین جداول حسابداری میتوان به:
- Accounting.DailyAccountingDocument: ذخیره اسناد حسابداری
- Accounting.DailyAccountingDocumentItem: نگهداری اطلاعات ردیفهای بدهکار، بستانکار و کد حساب معین
- Accounting.Account: شامل حسابهای کل، معین و تفضیلی
- Sell.SellInvoice: ذخیره فاکتورهای فروش
- Sell.SellInvoiceItem: ذخیره اقلام هر فاکتور فروش
- CRM.Customer: اطلاعات کامل مشتریان
- ReceivePay.ReceivePayDoc: اسناد دریافت و پرداخت
- ReceivePay.ReceivePayDocItem: جزئیات اسناد دریافت و پرداخت
- ReceivePay.Cheque: اطلاعات چکها
- Inventory.Goods: اطلاعات کالاها و محصولات
- Inventory.WarehouseReceipt: رسیدهای انبار
- Asset.Asset: اطلاعات داراییهای ثابت
- Asset.AssetDepreciation: استهلاک داراییها
نماهای مهم (View) در سپیدار
- Vw_AllAccountTransactions: مشاهده همه تراکنشهای حسابداری
- Vw_CustomerBalance: مانده حساب مشتریان
- Vw_InventoryStatus: وضعیت موجودی انبار
مبانی کوئری نویسی در SQL Server
بازیابی اطلاعات با SELECT
SELECT AccountCode, AccountTitle FROM Accounting.Account WHERE AccountType = 'معین'
ترکیب دادهها با JOIN
SELECT si.InvoiceNumber, si.InvoiceDate, c.Name AS CustomerName, sii.TotalPrice FROM Sell.SellInvoice si JOIN CRM.Customer c ON si.CustomerId = c.CustomerId JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
فیلتر دادهها با WHERE
SELECT DocumentNumber, Amount FROM Accounting.DailyAccountingDocumentItem WHERE Amount > 50000000
چندین شرط با AND و GROUP BY
SELECT si.InvoiceNumber, c.Name, SUM(sii.TotalPrice) AS TotalAmount FROM Sell.SellInvoice si JOIN CRM.Customer c ON si.CustomerId = c.CustomerId JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId WHERE si.InvoiceDate BETWEEN '2024-01-01' AND '2024-12-31' AND c.City = 'تهران' GROUP BY si.InvoiceNumber, c.Name
توابع تجمعی (Aggregation)
SELECT
YEAR(si.InvoiceDate) AS SalesYear,
SUM(sii.TotalPrice) AS TotalRevenue
FROM Sell.SellInvoice si
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY YEAR(si.InvoiceDate)
شرطیسازی با CASE WHEN
SELECT
CASE WHEN si.PaymentType = 'نقدی' THEN 'نقدی' ELSE 'اعتباری' END AS PaymentMode,
SUM(sii.TotalPrice) AS TotalSales
FROM Sell.SellInvoice si
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY CASE WHEN si.PaymentType = 'نقدی' THEN 'نقدی' ELSE 'اعتباری' END
محاسبه سود ناخالص
SELECT
si.InvoiceNumber,
SUM(sii.TotalPrice) AS Revenue,
SUM(sii.CostPrice * sii.Quantity) AS Cost,
SUM(sii.TotalPrice) - SUM(sii.CostPrice * sii.Quantity) AS GrossProfit
FROM Sell.SellInvoice si
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY si.InvoiceNumber
توابع تحلیلی (Window Functions)
رتبهبندی مشتریان با RANK
SELECT
c.Name,
SUM(sii.TotalPrice) AS TotalPurchase,
RANK() OVER (ORDER BY SUM(sii.TotalPrice) DESC) AS RankCustomer
FROM CRM.Customer c
JOIN Sell.SellInvoice si ON c.CustomerId = si.CustomerId
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY c.Name
مقایسه فروش ماههای متوالی با LAG
SELECT
YEAR(si.InvoiceDate) AS SaleYear,
MONTH(si.InvoiceDate) AS SaleMonth,
SUM(sii.TotalPrice) AS TotalSales,
LAG(SUM(sii.TotalPrice)) OVER (ORDER BY YEAR(si.InvoiceDate), MONTH(si.InvoiceDate)) AS PrevMonthSales
FROM Sell.SellInvoice si
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY YEAR(si.InvoiceDate), MONTH(si.InvoiceDate)
میانگین متحرک سه ماهه فروش
SELECT
YEAR(si.InvoiceDate) AS SaleYear,
MONTH(si.InvoiceDate) AS SaleMonth,
SUM(sii.TotalPrice) AS TotalSales,
AVG(SUM(sii.TotalPrice)) OVER (ORDER BY YEAR(si.InvoiceDate), MONTH(si.InvoiceDate) ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS MovingAvg
FROM Sell.SellInvoice si
JOIN Sell.SellInvoiceItem sii ON si.InvoiceId = sii.InvoiceId
GROUP BY YEAR(si.InvoiceDate), MONTH(si.InvoiceDate)
سوالات متداول
- برای یادگیری بیشتر SQL Server چه منابعی پیشنهاد میشود؟
W3Schools SQL Tutorial
مستندات رسمی مایکروسافت SQL Server - اتصال سپیدار به Power BI چگونه است؟
از طریق Direct Query در Power BI و اتصال به SQL Server میتوانید دادهها را بهصورت Live بارگذاری کنید. - آیا سپیدار امکان ارائه API برای دادههای مالی دارد؟
در حال حاضر سپیدار مستقیما API عمومی ارائه نمیدهد اما دسترسی به دیتابیس SQL Server این امکان را به توسعهدهندگان میدهد.
جمعبندی
این دانش پایهای از ساختار دیتابیس سپیدار، اصول کوئرینویسی و توابع تحلیلی به مدیران مالی، حسابداران و تحلیلگران کمک میکند تا به بینشی عمیق از وضعیت مالی، روند فروش، سودآوری و عملکرد مشتریان دست یابند. توانایی تحلیل با SQL در سپیدار نهتنها امکان استخراج اطلاعات دقیق را فراهم میکند، بلکه مسیر هوش تجاری و تصمیمگیریهای استراتژیک در سازمانها را هموار میکند.
نظرات کاربران