[英]How to aggregate by certain columns and not others in SQL
|其他|最后|第一個|程序|
|貓|阿克|鮑勃A|
|狗|阿克|鮑勃|B|
|爬行動物|阿克|鮑勃|A|
|貓|樺木|肉餅|B|
|兔子|卡爾霍恩|彼得|C|
成為
|其他|最后|第一個|程序|
|貓|阿克|鮑勃A|
|狗|阿克|鮑勃|B|
|貓|樺木|肉餅|B|
|兔子|卡爾霍恩|彼得|C|
你如何讓上述工作? 我是一個sql新手。 我試圖根據其他字段中的某些值而不是其他字段中的某個字段來獲取記錄總數。 在上表中,我基本上是想讓sql拉出爬蟲Acker Bob A,因為A已經被Bob表示為程序了。 但我不希望 Bob 刪除以下內容,因為這些程序只表示一次:
cat Acker Bob A
dog Acker Bob B
我試過這個,但我無法讓它工作:
SELECT program, total, sum(program) as allTotal
FROM mytable
GROUP BY program
HAVING count(program) <= 1
我希望我的最終結果是這樣的:
程序總計 allTotal
一個 2 5
乙 1 5
1 5
這是你想要的嗎?
select
program,
count(*) total,
(select count(*) from mytable) all_total
from mytable
group by program
聽起來你想要
SELECT program, COUNT(distinct CONCAT(first, last)) AS total, (SELECT COUNT(*) FROM mytable) AS allTotal
FROM mytable
GROUP BY program
通過只計算不同的 CONCAT(first, last),它不會在程序 A 中計算 Bob 兩次。
一些沒有CONCAT
的等價物:
SELECT program, COUNT(distinct first||last) AS total, (SELECT COUNT(*) FROM mytable) AS allTotal
FROM mytable
GROUP BY program
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.