我有一个数据库工作表。 每个作业都是由用户创建的。有很多用户。 用户表包含user_id和用户电子邮件地址。
---------------
**JOBS_TABLE**
---------------
JOB_ID
USER_ID
---------------
---------------
**USERS_TABLE**
---------------
USER_ID
USER_EMAIL
---------------
我想知道每个用户创建了多少个作业。是否可以在SQL中执行此操作?
理想情况下,我希望得到这样的结果。
------------------------------
|USER_ID|JOB_COUNT|USER_EMAIL|
------------------------------
|user1 |2000 |x@sfd.com |
|user2 |5433 |sd@fds.com|
------------------------------
这是一次性的报告,所以我不担心性能。我正在使用MySQL。
由于
答案 0 :(得分:2)
这是一个标准计数查询(如果你想要所有人,即使他们没有工作记录,也可以用户LEFT JOIN而不是INNER JOIN):
SELECT
U.USER_ID,
COUNT(JOB_ID) AS JOB_COUNT,
U.USER_EMAIL
FROM
USERS_TABLE U
INNER JOIN JOBS_TABLE J ON
U.USER_ID = J.USER_ID
GROUP BY
U.USER_ID,
U.USER_EMAIL
答案 1 :(得分:0)
select user.USER_ID,user.USER_EMAIL,count(distinct jobs.JOB_ID)
from USERS_TABLE user natural join JOBS_TABLE jobs group by user.USER_ID
答案 2 :(得分:0)
SELECT u.user_id,u.user_email,count(j.job_id)as jobcount FROM users
你通过u.user_id加入u.user_id = j.user_id group上的作业j
此查询将输出如下:
user_id user_email jobcount
1 123@abc.com 3
2 456@def.com 1