2015-09-05 55 views
0

我正在運行一個當前從animals表中計數species的查詢。但是,我沒有得到下面列出的查詢所需的結果。目前COUNT正在計數specie,它由兩個字typebreed(例如dog-pitbull)組成。查詢返回所有條目的1。但是,怎樣才能將狗的結果和計數結合起來,並用狗,貓,鳥等計數,而不顧品種? SQLFIDDLE在表格字段中使用計數和分組依據「 - 」

查詢

SELECT specie, COUNT(*) as Total FROM animals GROUP BY specie; 

架構

CREATE TABLE animals 
    (`id` int, `name` varchar(20), `specie` varchar(55)) 
; 

INSERT INTO animals 
    (`id`, `name`, `specie`) 
VALUES 
    (1, 'dougie', 'dog-poodle'), 
    (2, 'bonzo', 'dog-pitbull'), 
    (3, 'cadi', 'cat-persian'), 
    (4, 'mr.turtle', 'turtle-snapping'), 
    (5, 'spotty', 'turtle-spotted'), 
    (6, 'tweety', 'bird-canary') 
; 
+0

可以請您說明您最終的數據集看起來怎麼樣? – Jaylen

回答

1

該查詢會給你阿尼姆al型和計數,即2只狗,1只貓,2只烏龜,1只鳥。

它查看specie的值,它會返回第1個-之前的值以及計數。

SELECT 
    SUBSTRING_INDEX(specie,'-',1) AS specie 
, COUNT(*) AS total 
FROM animals 
GROUP BY SUBSTRING_INDEX(specie,'-',1); 
1

使用SUBSTRING_INDEX:

SELECT SUBSTRING_INDEX(specie,'-',1), specie, COUNT(*) AS Total 
FROM animals GROUP BY SUBSTRING_INDEX(specie,'-',1); 


    RESULT: 
     bird bird-canary  1 
     cat  cat-persian  1 
     dog  dog-poodle  2 
     turtle turtle-snapping 2 

DOKU SUBSTRING_INDEX