我有一个库数据库,它写了一个查询来显示员工借出书籍的数量,如下所示:
select Emploee.[Emp-No],count(*) as ecount
from Emploee
inner join Loan on Emploee.[Emp-No]=Loan.[Emp-No]
inner join Book on Loan.ISBN=Book.ISBN group by Emploee.[Emp-No]
Run Code Online (Sandbox Code Playgroud)
上面查询的结果是这样的:
Emp-No ecount
------------------
1000 4
1001 2
1002 3
Run Code Online (Sandbox Code Playgroud)
现在我想修改输出并在每行结果的ecount列与另一个查询之间进行比较,这些查询根据该用户发布的具体情况给出了借调书籍的数量,其他单词结果我正在寻找的是这样的
Emp-No ecount
-----------------
1000 4
Run Code Online (Sandbox Code Playgroud)
假设员工1000从一个出版商借出了他所有的书.他将在结果中露面.
这样的事情
"..... my query...." having ecount=
(select count(*) from books where publisher='A')
Run Code Online (Sandbox Code Playgroud)
但我不能在另一个查询中使用结果ecount :(
在澄清之后,我理解了以下问题:将那些仅从单个出版商借出书籍的员工归还.
你可以COUNT(DISTINCT publisher)在你的HAVING条款中使用它.
像这样:
declare @employee table (id int);
declare @books table (isbn int, title varchar(50), publisher varchar(50));
declare @loan table (employee_id int, book_isbn int);
insert @employee values (1000);
insert @employee values (1001);
insert @employee values (1002);
insert @books values (1, 'Some Book', 'Publisher A');
insert @books values (2, 'Some Book', 'Publisher A');
insert @books values (3, 'Some Book', 'Publisher A');
insert @books values (4, 'Some Book', 'Publisher B');
insert @books values (5, 'Some Book', 'Publisher B');
insert @books values (6, 'Some Book', 'Publisher B');
insert @loan values (1000, 1);
insert @loan values (1000, 2);
insert @loan values (1001, 3);
insert @loan values (1001, 4);
insert @loan values (1001, 5);
-- Show the number of different publishers per employee
select e.id, count(*) as ecount, count(DISTINCT b.publisher) as publishers
from @employee e
inner join @loan l on e.id = l.employee_id
inner join @books b on l.book_isbn = b.isbn
group by e.id
-- yields: id ecount publishers
-- ----------- ----------- -----------
-- 1000 2 1
-- 1001 3 2
-- Filter on the number of different publishers per employee
select e.id, count(*) as ecount
from @employee e
inner join @loan l on e.id = l.employee_id
inner join @books b on l.book_isbn = b.isbn
group by e.id
having count(DISTINCT b.publisher) = 1
-- yields: id ecount
-- ----------- -----------
-- 1000 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |