[英]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.