簡體   English   中英

如何在 SQL 中按某些列聚合而不是按其他列聚合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM