我有一個簡單的表格,用於存儲一堆股票的市值。我想看看我是否能創建一個查詢,將返回類似以下內容:mySQL:CASE,GROUP和ORDER By
cap_type type_count
micro 4
small 6
large 1
mega 2
我不知道如何調整這個查詢計數的不同選擇病例組cap_types的數量。這是我到目前爲止有:
SELECT CASE
WHEN market_cap < 10 THEN 'micro'
WHEN market_cap >= 10 < 50 THEN 'small'
WHEN market_cap >= 50 < 100 THEN 'large'
ELSE 'mega'
END AS cap_type
FROM stocks
GROUP BY CASE
WHEN market_cap < 10 THEN 'micro'
WHEN market_cap >= 10 < 50 THEN 'small'
WHEN market_cap >= 50 < 100 THEN 'large'
ELSE 'mega'
END
ORDER BY cap_type ASC
下面是一些樣本數據:
CREATE TABLE `stocks` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`stock` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
`market_cap` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO temp (`stock`,`market_cap`) VALUES ('MSFT', 40);
INSERT INTO temp (`stock`,`market_cap`) VALUES ('MINI', 4);
INSERT INTO temp (`stock`,`market_cap`) VALUES ('GOOG', 50);
INSERT INTO temp (`stock`,`market_cap`) VALUES ('F', 90);
這並獲得成功,謝謝!現在我看看SQL,我可以看到CASE語句正在做什麼以及如何/在哪裏調用其他字段。 – Gunnar
@Gunnar,順便說一句,我複製並粘貼了您的CASE語句,並且它包含錯誤,我更新了答案與正確的解決方案。 – newtover