我有兩個非常簡單的計數查詢,我想將它們合并為一個。
為了澄清這種情況,我將添加我得到的表格:
書
| 書號 | 作者 |
|---|---|
| 1111 | 國標 |
| 2222 | 直流電 |
| 3333 | 強化學習 |
作者
| 代碼 | 姓名 |
|---|---|
| 國標 | 喬治 B. |
| 吉隆坡 | 凱爾 L。 |
| 直流電 | 唐納德 C. |
| 強化學習 | 羅蘭·L。 |
合著者
| 姓名 | 書號 |
|---|---|
| 吉隆坡 | 1111 |
| 國標 | 2222 |
| 國標 | 3333 |
以及我提出的查詢:查詢 1:
SELECT a.name, count(*)
FROM coauthor c INNER JOIN author a ON c.name = a.code
GROUP BY a.name
給出:
| 姓名 | 數數(*) |
|---|---|
| 吉隆坡 | 1 |
| 國標 | 2 |
查詢 2:
SELECT a.name, count(*)
FROM author a INNER JOIN book b ON a.code = b.author
GROUP BY a.name
給出:
| 姓名 | 數數(*) |
|---|---|
| 國標 | 1 |
| 直流電 | 1 |
| 強化學習 | 1 |
所以我想得到:
| 姓名 | 數數(*) |
|---|---|
| 喬治 B. | 3 |
| 唐納德 C. | 1 |
| 羅蘭·L。 | 1 |
| 凱爾 L。 | 1 |
我一直在網上搜索,但我想我不知道從哪里開始。
uj5u.com熱心網友回復:
你可以加入Author到Book和Coauthor使用LEFT的連接和聚合:
SELECT a.code, a.name,
COUNT(DISTINCT b.isbn) COUNT(DISTINCT c.isbn) count
FROM Author a
LEFT JOIN Book b ON b.author = a.code
LEFT JOIN Coauthor c ON c.name = a.code
GROUP BY a.code, a.name;
請參閱演示。
uj5u.com熱心網友回復:
聯合合著者和書籍,然后將這些獨特的結果加入到作者中
SELECT q.code as Name
-- , a.name as Author
, COUNT(*) as Total
FROM
(
SELECT name AS code, isbn
FROM coauthor
UNION
SELECT author, isbn
FROM book
) q
JOIN author a
ON q.code = a.code
GROUP BY q.code, a.name
ORDER BY q.code
請注意, normalUNION將過濾掉重復的行。
而 aUNION ALL保留重復的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367498.html
上一篇:列印'1'的最大子序列的長度
