如何计算字段name
的内容出现在我的表格中的次数?
Name | Other
Brad | smth
Brad | smth
Daniel | smth
Matt | smth
Matt | smth
Matt | smth
例如,对于上表,我想知道我有多少次'布拉德',多少次'丹尼尔'和多少次'马特'。我怎么做只有一个选择? 我对此感兴趣,因为我想只显示出现次数超过给定值的名称。
我的实际代码:
select director.LastName,director.FirstName,count(director.FirstName)as counter,film.title
from director,film
where film.Id_Director=director.id
group by director.LastName,director.FirstName,film.title
having count(Director.FirstName)>2
Baz Luhrmann 1 Paranormal activity 4
Baz Luhrmann 1 Struck by lightning
Baz Luhrmann 1 The big bang theory
Baz Luhrmann 1 The family
Baz Luhrmann 1 The Quarterback
Brad Falchuk 1 A Kitty or a Gaga
Brad Falchuk 1 All or nothing
Brad Falchuk 1 Bridesmaids
Brian Dan 1 All or nothing
我希望它能准确统计“Baz”出现在桌面上的次数(这应该针对每个名字进行)并且仅在count>的值时显示。例如,3。
答案 0 :(得分:1)
按名称分组并使用count()
select name, count(*) as name_count
from your_table
group by name
count
等汇总函数适用于每个 。
仅显示出现次数超过1次的名称
select name, count(*) as name_count
from your_table
group by name
having count(*) > 1
Having
就像一个where
子句,但适用于群组。
select d.LastName, d.FirstName, count(f.Id_Director) as counter
from director d
inner join film f on f.Id_Director = d.id
group by d.LastName, d.FirstName
having count(f.Id_Director) > 2
你也按电影分组了。那不行。你基本上要求的是那些超过一部电影 2倍的导演。
答案 1 :(得分:0)
问题是你是按电影分组的。因为有一个导演/电影病了,算作1。
您想要将电影名称保留在选择结果集中我建议您制作精选电影和子查询,以计算导演可以加入其他电影的次数。
刚刚在SQLFiddle上写了一个例子 Example