如何在select
语句中计算重复行?
这是我的表:
name | food |
---|---|
A | Apple |
B | Banana |
A | Banana |
C | Apple |
结果应该像这样:
name | food | count |
---|---|---|
A | apple | (2) |
B | Banana | (1) |
A | Banana | (2) |
C | Apple | (1) |
我需要在结果集中加入第三列,其值为count(Name)
提前感谢
如何在select
语句中计算重复行?
这是我的表:
name | food |
---|---|
A | Apple |
B | Banana |
A | Banana |
C | Apple |
结果应该像这样:
name | food | count |
---|---|---|
A | apple | (2) |
B | Banana | (1) |
A | Banana | (2) |
C | Apple | (1) |
我需要在结果集中加入第三列,其值为count(Name)
提前感谢
SELECT name, food, COUNT(food) AS cnt
FROM table
GROUP BY name, food
HAVING (cnt > 1)
如果你想统计所有的元素数量,而不仅仅是有重复的元组,则应该删除HAVING行,因为那会过滤掉没有重复项的任何内容。
你所要做的事情不是很清晰,下面提供两种可能性。
如果你想确定相同的名字
和食物
组合出现了多少次,你可以使用GROUP BY
来分组并使用COUNT
确定该组中有多少条记录:
SELECT name, food, COUNT(*) AS count
FROM your_table_name
GROUP BY name, food
如果您想仅检索名称重复的次数,您需要使用子查询:
SELECT name, food,
(
SELECT COUNT(*)
FROM your_table_name
WHERE name = table_alias.name
) AS count
FROM your_table_name AS table_alias
第一个查询语句将仅针对每个name
/food
组返回一行,并附带在该组中出现的记录数。第二个查询语句将返回所有行,并计算每行中具有相同名称的行数。