[英]MySQL - join two tables, group and count
我有兩個表:
reviewStatusPhases - id|name
和
userPhase - id|reviewStatusPhase_id|user_id|created_at|updated_at
reviewStatusPhases表插入了記錄(活動、非活動、暫停、終止...),並且userPhase為空。
這些表通過
userPhase.reviewStatusPhase_id = reviewStatusPhases.id
一對一。
是否有可能在一個查詢中我得到所有 reviewStatusPhases,並計算每個階段有多少用戶? 在這種情況下,我會得到這樣的東西:
Active (0 Users)
Inactive (0 Users)
On Pause (0 Users)
Terminated (0 Users)
我在這里做了一些假設(例如,連接中的 INNER JOIN 與 LEFT JOIN 以及計數中的 DISTINCT),但聽起來你只是想要
SELECT reviewStatusPhases.name, COUNT(DISTINCT userPhase.user_id)
FROM userPhase INNER JOIN reviewStatusPhases
ON userPhase.reviewStatusPhase_id = reviewStatusPhases.id
GROUP BY reviewStatusPhases.name
查詢如下:
SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name
使用LEFT JOIN
如下:
SELECT COUNT(m.UserId) FROM Table1 m
LEFT JOIN Table2 k ON k.StatusId = m.StatusId
WHERE k.Status = 'Inactive'
您可以輕松地使用狀態列來跟蹤用戶及其活動。 在您的情況下, ReviewStatus 。
我希望以下內容會有所幫助
SELECT RPS.Name, COUNT(UP.user_id)
FROM reviewStatusPhases RPS
LEFT OUTER JOIN userphases UP ON RPS.id = UP.reviewStatusPhase_id
GROUP BY RPS.Name
ORDER BY RPS.Name
SELECT
DISTINCT s.s_level AS 'Level',
COUNT(DISTINCT s.s_id) AS Schools,
COUNT(DISTINCT st.st_id) AS Teachers
FROM schools AS s
JOIN school_teachers AS st ON st.st_school_idFk = s.s_id AND st.st_status = 1
WHERE s.s_status = 1
GROUP BY s.s_level
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.