如何通过选择语句计算重复行
这是我的表
name food
A Apple
B Banana
A Banana
C Apple
结果应该是这样的:
name food count
A apple (2)
B Banana (1)
A Bananaa (2)
C Apple (1)
我需要在结果集中使用第三个coloumn,其值为count(Name)
提前致谢
答案 0 :(得分:31)
目前还不清楚你想要做什么,所以这里有两种可能性。
如果您想确定发生相同name
和food
组合的次数,可以使用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
组只返回一行,以及该组中显示的记录数。第二个查询将返回所有行,并计算每行中具有相同名称的行数。
答案 1 :(得分:29)
SELECT name, food, COUNT(food) AS cnt
FROM table
GROUP BY name, food
HAVING (cnt > 1)
如果你想要计算所有东西,而不仅仅是带有重复的元组,那么就消除HAVING行,因为它会过滤掉任何没有重复的东西。