sql - 计数函数 - SQL
问题描述
我有这些练习表可以使用:
create table complaints (compid int, compdate date, fineid int, description varchar)
insert into complaints values
(1010, '24-FEB-2017', 10001, NULL),
(1011, '01-AUG-2017', 10003, NULL),
(1012, '30-JUL-2017', 10004, NULL),
(1013, '02-MAR-2017', 10001, NULL)
create table Fines (fineID int, finedate date, empid int, amount int)
insert into Fines values
(10001, '01-FEB-2017', 1, 250),
(10002, '11-MAR-2017', 2, 250),
(10003, '25-JUN-2017', 4, 500),
(10004, '23-JUL-2017', 4, 250)
(10005, '31-JUL-2017', 3, 250)
create table Employees (empid int, empname nvarchar(100), workingsince date)
insert into Employees values
(1,'John','01-JAN-2007'),
(2,'Abe','01-JUL-2008'),
(3,'Don','01-JAN-2013'),
(4,'Gon','01-JAN-2017')
现在,我想创建一个查询,显示每个员工的姓名、罚款数量和投诉数量(都在同一个表中 - empname、NumofFines、NumOfComp)。
看来我需要 2 列带有 count 功能,但我找不到办法。
解决方案
您可以使用聚合:
select
e.empname,
count(distinct f.fineid) no_fines,
count(distinct c.compid) no_complaints
from employees e
left join fines f on f.empid = e.empid
left join complaints c on c.fineid = f.fineid
group by e.empid, e.empname
员工名 | no_fines | 没什么好抱怨的 :-------- | --------: | ------------: 安倍 | 1 | 0 唐 | 1 | 0 贡 | 2 | 2 约翰 | 1 | 2
推荐阅读
- php - PHP API 的网关错误问题
- excel - 为什么 Pandas 不读取 xlsx 文件?
- php - 如何包含 PHP 并传入查询,以便它在 URL 中没有查询字符串的情况下呈现
- docker - 如何进行名称解析。使用 docker compose 和 docker network 时发生 net::ERR_NAME_NOT_RESOLVED 错误
- hibernate - failOverReadOnly 在 mysql-connector-java-5.1.6 中不起作用
- python - 使用索引作为哈希函数生成随机参数组合的有效方法
- python - Visual Studio Code 数据查看器问题
- excel - 在 Excel VBA 中合并两个相同的模块
- r - 使用 pdf 查看器 (UiOutput) 和 selectableTableOutput (shinyjqui 包) 在 Shiny 中出现临时内存错误
- javascript - 如何根据字段值显示自定义输出