Как выбрать уникальное значение столбца и отобразить его сумму значений другого столбца? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь выбрать сумму NumberOfHours для человека с PNr = 19900130. Я хочу, чтобы PNr был уникальным, но покажу столбец PNr = 19990130 и столбец суммы количества человек в часах. Что за хитрость?

PNr         Date       NumberOfHours
----------  ----------  -----------
19990130    20200301    8
20100003    20200204    9
19990130    20200530    10
19990130    20200808    7
19990130    20200507    10
19990130    20200209    8
19990130    20200702    4
19990130    20200606    6
19990130    20201212    6
19990130    20200909    3
19990130    20200504    4
19990130    20200104    5
19990130    20180201    4
19990130    20170109    4
19990130    20160130    7
19990130    20250302    4
19990130    20180304    9
19990130    20160105    7
19990130    20190901    5
19990130    20100806    8
19990130    20201115    7
13450906    20120120    9
19990130    20010102    3
19990130    20190114    5
19990130    14220101    5
20040503    20020203    7
19000101    20170710    4

Результат, который я получаю (который является суммой ВСЕГО ЧИСЛА ЧАСОВ, ДОБАВЛЕННЫХ ВМЕСТЕ). Только заинтересованные лица Общее количество часов 19990130:

select distinct PNr
              , sum(AntalTimmar) 
from Tidbok 
where PNr = 19990130 
group by PNr 
order by sum(AntalTimmar) = 1 desc;

Генерирует:

PNr         sum(NumberOfHours)
----------  ----------------
19990130    139

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Вам не нужно использовать GROUP BY, ORDER BY и LIMIT или DISTINCT:

select PNr, sum(NumberOfHours) total
from Tidbok 
where PNr = 19990130

. Вы бы использовали GROUP BY, если хотите получить результаты для всех PNR. Также, поскольку запрос возвращает только 1 строку, нет необходимости в ORDER BY и LIMIT. Смотрите демо . Результаты:

| PNr      | total |
| -------- | ----- |
| 19990130 | 139   |
0 голосов
/ 17 марта 2020

Я не уверен, какой у вас столбец AntalTimmar вы указали, что хотите получить сумму NumberOfHours. Это делается так:

select pnr, sum(NumberOfHours)
from Tidbok
where pnr = '19990130';

выглядит хорошо для меня: https://www.db-fiddle.com/f/oTTpJ9tTudkFrqy1WJghZj/5

Или это то, что вы ищете:

select pnr, (select sum(t.NumberOfHours) from Tidbok t where t.pnr = '19990130')
from Tidbok
group by pnr;

Вопрос в начале не очень понятен:)

Вот демоверсия для второго запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...