你好,提前感謝!
我想查詢在 "星巴克 "簽到的比例最高的5個國家。
我可以分別查詢特定國家的所有簽到的計數和特定國家的星巴克簽到的計數。
所有簽到的查詢
select loc_ctry, count(loc_ctry)
from Table_T
group by loc_ctry
starbucks check-ins查詢
select loc_ctry, count(loc_ctry)
from Table_T
where loc_name = 'Starbucks'/span>
group by loc_ctry
但是,我很難同時查詢這兩樣東西以計算出百分比。 希望能得到任何幫助!
編輯。謝謝大家的幫助。我已經想出了正確的查詢方法,如下所示:SELECT TOP 5 loc_ctry。cast((COUNT(CASE loc_name WHEN 'Starbucks' THEN 1 END) as decimal) / count(*) as percents
FROM Table_T
GROUP BY loc_ctry
ORDER BY percents DESC
uj5u.com熱心網友回復:
你可以在count里面使用一個case運算式來計算StarBucks的簽到,然后除以簽到總數:
SELECT TOP 5 loc_ctry, COUNT(CASE loc_name WHEN 'Starbucks' THEN 1 END) / COUNT(*)。
FROM table_t
GROUP BY loc_ctry
ORDER BY 2 DESC
uj5u.com熱心網友回復:
如果你想找出前5名Starbucks的百分比,請嘗試以下查詢。而且你在image鏈接中有6個條目,星巴克有2個。百分比應該是33.33。數目被轉換為小數以獲得百分比計算。
select top 5 * from<
(
select loc_ctry, ((TotalCountCountry/TotalCount)*100) 百分比來自的百分比
(
select loc_ctry, cast(count(loc_ctry) as decimal(18, 2) 國家總計數
,cast((select Count(*) from Table_T) as decimal(18, 2) 總計數
from Table_T
where loc_name = 'Starbucks'
group by loc_ctry
) a
) b order by Percentage desc
uj5u.com熱心網友回復:
第一種方法。通用:
SELECT TOP 5 loc_ctry。COUNT(*) * 100。 0 / (SELECT count(*) FROM Table_T)
FROM Table_T
WHERE loc_name ='Starbucks'
GROUP BY loc_ctry
第二種方法。使用Over():
SELECT TOP loc_ctry, COUNT(*) * 100. 0 / SUM(COUNT(*))。OVER()
FROM Table_T
WHERE loc_name ='Starbucks'
GROUP BY loc_ctry
uj5u.com熱心網友回復:
你可以使用avg()來計算比例,然后直接選擇你想要的數字:
select top (5) loc_ctry,
avg(case when loc_name = 'Starbucks' then 1. 0 else 0 end) as starbucks_ratio
from Table_T
group by loc_ctry
order by starbucks_ratio desc;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311067.html
標籤:
上一篇:SELECTFROMWHEREcharcolumnwithmixedstringandintegersvaluesthrowingconversionfailedconvertingvarcharto
