在數據庫設計和開發中,避免存儲任何可以從其他字段計算或重建的數據是一種慣例。因此,在 Navicat BI 中構建圖表時,你可能會缺少一些數據。但這不是問題,因為 Navicat BI 提供了專門用于此目的的計算字段。在今天的博客中,我們將使用計算字段來構建圖表,該圖標顯示每個客戶的平均租賃時間(即客戶在歸還電影前保留電影的時間長度)。


獲取客戶租賃信息

正如本系列之前的博客中提到的,我們應該在設計圖表前創建數據源,因為我們需要指定圖表使用的數據源。數據源引用連接中的表或文件/ODBC 源中的數據,并可從不同服務器類型的表中選擇數據。創建新數據源后,我們可以點擊“新建數據源查詢”打開查詢設計器。在這里,我們可以直接在編輯器中編寫 SQL 語句,使用可視化查詢生成器,或從 Navicat 導入查詢。下面是 SELECT 語句,它將獲取客戶信息、租賃金額、影片租賃日期和歸還日期:



保存查詢并刷新數據后,我們就能看到所有查詢字段和結果集:



現在,我們可以使用 rental_date 和 return_date 字段來計算租用期限。為此,請右鍵單擊字段列表中的 return_date(在 macOS 上按住 Control 鍵),然后從彈出菜單中選擇新建計算字段...:



“新建計算字段”對話框中,你可以查看到很多有用的函數,包括聚合函數、日期時間函數、邏輯函數等。我們將使用 DATEDIFF() 函數計算出租日期和返回日期字段之間的天數。該函數接受一個時間單位以及開始和結束日期。我們可以閱讀函數列表下方的說明,了解更多信息。我們將傳遞一個“D”(日)作為單位,以及兩個日期字段,如下所示:



對話框底部有一個預覽,告訴我們是否得到了想要的結果。

單擊“確定”按鈕后,我們就可以在字段列表和結果中看到新字段了:



建立每個客戶的平均租賃時間圖表

由于每個客戶 ID 都是一個單獨的數據點,因此使用散點圖可能效果不錯。散點圖是將單個數據點沿著 X 軸和 Y 軸繪制的數據圖。我們將使用 customer_id 作為 X 軸,使用 rental_duration (Average) 作為 Y 軸。只需將字段拖動到圖表設計器中的 X 軸和 Y 軸字段,將平均值聚合應用到 rental_duration 上,然后,就可以立即繪制圖表了!



以下是顯示模式下的完整圖表:



補充:顯示每位客戶的租賃次數


雖然平均值很有用,但顯示每位客戶租用一部或多部電影的次數也很有用。為此,我們可以使用聚合函數。我們將計算結果集中的金額條目數,并按 customer_id 進行分組。下面是新計算字段對話框,其中調用了 AGGCOUNT() 函數:



在圖表設計器中,我們將把新的 number_of_rentals 字段拖到顏色槽中。添加升序排序后,圖例項將按租用次數從少到多排序:



我們可以將光標懸停在單個數據點上,查看其詳細信息。此時會出現一個工具提示,顯示租用次數、customer_id 以及平均租用天數 rental_duration: