簡體   English   中英

MySQL計數同一表上的子查詢

[英]MySQL count subquery on same table

我有這個查詢:

SELECT `facilities`.`name` AS facility, `countries`.`name` AS country, `states`.`name` AS state, `users`.`dosage` AS dosage, COUNT(`users`.`id`) AS registrations 
FROM `users` 
LEFT JOIN `countries` ON `users`.`country_id` = `countries`.`id` 
LEFT JOIN `states` ON `users`.`state_id` = `states`.`id` LEFT JOIN `user_facilities` ON `users`.`id` = `user_facilities`.`user_id` 
LEFT JOIN `facilities` ON `user_facilities`.`facility_id` = `facilities`.`id` 
WHERE `users`.`dosage` != "Not sure" 
GROUP BY `facilities`.`name`, `countries`.`name`, `states`.`name`, `users`.`dosage` 
ORDER BY `facilities`.`id` ASC, `countries`.`id` ASC, `states`.`name` ASC

它給了我這個結果:

Hospital  | United States | Arkansas | 10 doses  | 3    
Hospital  | United States | Arkansas | >10 doses | 4    
Home care | United States | Arkansas | 10 doses  | 1    
Home care | United States | Texas    | 10 doses  | 1

我的用戶表:id | 電郵| state_id | country_id | 用量 已完成的百分比

我需要做的是獲取每個結果的percent_completed = 100的用戶數。 我嘗試了子查詢,但是找不到適合的子查詢。 我被卡住了。 有人有建議嗎? 謝謝。

如果我理解正確,則可以使用條件聚合。 在MySQL中,您可以執行以下操作:

select . . .,
       sum(percent_completed = 100) as num_at_100

分組依據之后,請添加“讓總和(percent_completed)> = 100”,這將使您的用戶計算完成率> = 100%

SELECT `facilities`.`name` AS facility, `countries`.`name` AS country, `states`.`name` AS state, `users`.`dosage` AS dosage, COUNT(`users`.`id`) AS registrations 
FROM `users` 
LEFT JOIN `countries` ON `users`.`country_id` = `countries`.`id` 
LEFT JOIN `states` ON `users`.`state_id` = `states`.`id` LEFT JOIN `user_facilities` ON `users`.`id` = `user_facilities`.`user_id` 
LEFT JOIN `facilities` ON `user_facilities`.`facility_id` = `facilities`.`id` 
WHERE `users`.`dosage` != "Not sure" 
GROUP BY `facilities`.`name`, `countries`.`name`, `states`.`name`, `users`.`dosage` having sum(users.percentage_completed) >= 100
ORDER BY `facilities`.`id` ASC, `countries`.`id` ASC, `states`.`name` ASC

暫無
暫無

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

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