统计表中的项目,涉及的表字段枚举类型
Posted
技术标签:
【中文标题】统计表中的项目,涉及的表字段枚举类型【英文标题】:Count items in table, table field enum type involved 【发布时间】:2014-01-29 02:16:03 【问题描述】:我有一个名为animals
的基本表,其中包含两个字段name
和type
。字段type
是一个具有以下值的枚举字段:enum('dog','cat','horse','zebra','lion')
。我正在尝试运行查询并计算每个物种的数量以及指定该物种的名称。例如,预期结果将显示类似 dog=2, cat=2, etc.
的内容。在下面的查询中,我可以计算animals
的总数,但不能分解为物种和名称的数量。我怎么能这样做? SQLFIDDLE
查询:
select COUNT(type) from animals
表架构:
CREATE TABLE animals
(
name varchar(20),
type enum('dog','cat','horse','zebra','lion')
);
INSERT INTO animals
(name, type)
VALUES
('Bertha', 'horse'),
('Louis', 'cat'),
('Gina', 'cat'),
('Rafa', 'lion'),
('lilo', 'dog'),
('kilo', 'dog'),
('stripy', 'zebra');
【问题讨论】:
【参考方案1】:使用GROUP BY
和COUNT
按类型计算动物数量。
试试这个:
SELECT a.type, COUNT(1) AS Cnt
FROM animals a
GROUP BY a.type;
查看SQL FIDDLE DEMO
输出
| TYPE | CNT |
|-------|-----|
| dog | 2 |
| cat | 2 |
| horse | 1 |
| zebra | 1 |
| lion | 1 |
【讨论】:
【参考方案2】:你是说
select type, COUNT(*) from animals
group by type
SqlFiddle
【讨论】:
【参考方案3】:您可以使用按类型分组来获取每种动物类型的计数。这是相同的查询。
SELECT type
,COUNT(*) FROM 动物
分组type
类型计数(*)
狗 2 猫 2 马 1 斑马 1 狮子 1
【讨论】:
以上是关于统计表中的项目,涉及的表字段枚举类型的主要内容,如果未能解决你的问题,请参考以下文章
Apache Cayenne:处理 Postgresql 枚举类型