簡體   English   中英

SQL查詢堆積條形圖

[英]SQL query for stacked bar chart

在我的項目中,我試圖編寫一個查詢以獲取堆積條形圖的數據。 我沒有解釋數據庫的架構(這很冗長),而是找到了一個類似的類比,以后可以移植到數據庫。

在此頁面上 ,運行查詢

SELECT * FROM [Products]

在表格中,如果要選擇如下所示的堆積條形圖數據,該如何形成查詢?

  • 每個CategoryID一格
  • 在每個CategoryID中,我想要使用袋子,瓶子或罐子的產品數(單位列中的子字符串)

抱歉,我無法在此方面進行大量研究,因為我什至無法可視化SELECT子句的外觀。 我試圖檢查是否可以在WHERE子句中使用AS,然后對其進行計數。 但這似乎不是正確的語法。

我將通過PowerBI在MS SQL Server上運行實際查詢

第一步將為袋,瓶和罐子創建一個標志。 這可以在SQL或Power BI中完成。

對於SQL,請使用如下查詢:

SELECT *
    ,   CASE
            WHEN Products.Unit LIKE '%bag%' THEN 'Bag'
            WHEN Products.Unit LIKE '%bottle%' THEN 'Bottle'
            WHEN Products.Unit LIKE '%jar%' THEN 'Jar'
            ELSE 'Other'
        END AS 'UnitFlag'
FROM dbo.Products

對於Power BI,使用DAX通過以下公式創建新列:

UnitFlag = IF(IFERROR(SEARCH("bag", Products[Unit]), -1) > 1, "Bag",
    IF(IFERROR(SEARCH("Bottle", Products[Unit]), -1) > 1, "Bottle",
        IF(IFERROR(SEARCH("Jar", Products[Unit]), -1) > 1, "Jar",
            "Other"
        )
    )
)

然后只需配置您的堆疊圖表,如下所示。

圖形

在這里,您可以更改一些設置,以使圖形看起來更好一些; 例如,將X軸更改為“分類”而不是“連續”,並在不希望顯示的情況下隱藏“其他”類別。

聽起來您想了解聚合:

select categoryID, 
       reverse(left(reverse(unit), charindex(' ',reverse(unit))-1)) as Unit_type, -- gets the last word of `UNIT`
       count(*) as Total_Products
from Products
group by categoryID, 
         reverse(left(reverse(unit), charindex(' ',reverse(unit))-1))

這將根據單位類型和類別ID對所有行和組進行計數。 試試看,看看會發生什么。

我建議您盡早了解聚合,它非常強大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM