Как можно суммировать количество данных в одном столбце для указанного условия c в sql? - PullRequest
0 голосов
/ 26 мая 2020
book1_part1       1   00000118323
book1_part1       1   00000118323
book1_part1       1   00000118323
book1_part1       1   00000118323
book1_part1       2   00000118323
book1_part1       1   00000118337
book1_part1       1   00000118337
book1_part1       1   00000118337
book1_part1       1   00000118337
book1_part1       1   00000118337
book1_part1       1   00000118337
book1_part1       2   00000118337
book1_part1       1   00000118337
book1_part1       1   00000118343

каждая книга имеет идентификатор, и этот идентификатор имеет количество копий, поэтому база данных выглядит так, как указано выше, и результат должен быть:

book1_part1  00000118323 have 6 copies 
book1_part1  00000118337 have 8 copies 
book1_part1  00000118343 have 1 copy 

1 Ответ

1 голос
/ 26 мая 2020

Это простой агрегатный запрос.

Предполагая, что таблица называется books и что ее столбцы имеют имена name, id и no_copies, вы должны go:

select name, id, sum(no_copies) total_no_copies
from books
group by name, id

Вы можете легко сгенерировать ожидаемую фразу, используя конкатенацию строк - хотя эта задача лучше подходит для вашего приложения:

select 
    name, 
    concat(
        id, 
        ' has ',
        sum(no_copies),
        case when sum(no_copies) = 1 then ' copy' else ' copies' end
    ) info
from books
group by name, id
...