我对SQL数据库的项目很少,其中包含一些列的表。
问题:如何在SQL Server中创建视图,该视图计算我在列中有多少重复值并在下一列中显示该数字。
下面你可以看到我想要的结果。
|id|name|count|
|1 |tom | |
|2 |tom | |
|3 |tom | |
| | | 3 |
|4 |leo | |
| | | 1 |
答案 0 :(得分:2)
视图只是一个在CREATE VIEW AS
之前带有SELECT
字样的select语句。这允许例如1个人(DBA)维护(创建/改变)复杂视图,而另一个人(开发者)仅具有从中进行选择的权限。
所以要使用@ Stidgeon的回答(见下文):
CREATE VIEW MyCounts
AS
SELECT name, COUNT(id) AS counts
FROM table
GROUP BY name
以后你可以查询
Select * from MyCounts where counts > 1 order by name
或者你需要做什么。请注意,SQL SERVER中的视图中不允许使用order by
。
答案 1 :(得分:1)
您似乎只想计算每个'名称的条目数,在这种情况下,您只需要进行简单的COUNT查询:
CREATE VIEW view_name AS
SELECT name, COUNT(id) AS counts
FROM table
GROUP BY name
您的案例中的输出将是:
name counts
--------------
Tom 3
Leo 1
答案 2 :(得分:1)
您可以使用grouping sets
执行所需操作:
select id, name, count(*)
from t
group by grouping sets ((id, name), (name));
group by
上的id, name
是多余的;值应始终为" 1"。但是,这允许使用grouping sets
,这是一种用来表达查询的便捷方式。