[英]SQL query for stacked bar chart
在我的項目中,我試圖編寫一個查詢以獲取堆積條形圖的數據。 我沒有解釋數據庫的架構(這很冗長),而是找到了一個類似的類比,以后可以移植到數據庫。
在此頁面上 ,運行查詢
SELECT * FROM [Products]
在表格中,如果要選擇如下所示的堆積條形圖數據,該如何形成查詢?
抱歉,我無法在此方面進行大量研究,因為我什至無法可視化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.