Подтвердить что ты не робот

Подсчет количества сгруппированных строк в mysql

В таблице xyz у меня есть строка, называемая компонентами, и строка labref, которая имеет номер labref, как показано здесь.

Таблица xyz

labref             component
NDQA201303001          a
NDQA201303001          a
NDQA201303001          a
NDQA201303001          a
NDQA201303001          b
NDQA201303001          b
NDQA201303001          b
NDQA201303001          b
NDQA201303001          c
NDQA201303001          c
NDQA201303001          c
NDQA201303001          c

Я хочу сгруппировать компоненты, а затем подсчитать возвращаемые строки, равные 3, я написал ниже sql-запрос, но он не помогает достичь моей цели, а возвращает 4 для каждого компонента

SELECT DISTINCT component, COUNT( component ) 
FROM `xyz`
WHERE labref = 'NDQA201303001'
GROUP BY component

Запрос возвращает

Таблица xyz

labref         component   COUNT(component)       
NDQA201303001   a           4
NDQA201303001   b           4
NDQA201303001   c           4

То, что я хочу достичь сейчас, состоит в том, что из приведенного выше результата строки подсчитываются и 3 возвращается как число строк. Любое использование вокруг оценивается

4b9b3361

Ответ 1

Вам нужно сделать -

SELECT COUNT(*)
FROM(
SELECT DISTINCT component
FROM `multiple_sample_assay_abc`
WHERE labref = 'NDQA201303001'
)

Вы также можете избежать подзапроса, предложенного @hims056 здесь

Ответ 2

Попробуйте этот простой запрос без подзапроса:

SELECT COUNT(DISTINCT component) AS TotalRows
FROM xyz
WHERE labref = 'NDQA201303001';

См. этот SQLFiddle