首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中的思维实验

SQL中的思维实验
EN

Stack Overflow用户
提问于 2014-04-03 12:17:51
回答 2查看 77关注 0票数 1

我想显示SQL数据库中表中列中的每个不同元素出现的次数,以及新输出表中特定的不同元素出现的次数。是否可能在一次单独的声明中用手将我的头撞向它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 12:23:45

在没有实际尝试的情况下,这样如何:

代码语言:javascript
复制
SELECT tmp.Field, (SELECT COUNT(*) FROM [Table] t WHERE t.DesiredField = tmp.Field) AS Count
FROM
(
    SELECT DISTINCT DesiredField FROM [Table]
) tmp

这将首先从Table中选择所有不同的值,在外部选择中,取值和它们在列中出现的次数。

你也可以试试

代码语言:javascript
复制
SELECT Field, SUM(1) AS Count FROM Table
GROUP BY Field

这应该使表“变平”,以便它只包含Field中的不同值和Field具有相同值的行数。

我刚试了第二种--它看起来很好用。

原来我一直都是错的。第二个示例和下面的示例实际上返回相同的结果:

代码语言:javascript
复制
SELECT Field, COUNT(*) AS Count FROM Table
GROUP BY Field
票数 2
EN

Stack Overflow用户

发布于 2014-04-03 13:14:13

使用COUNT()最简单。您将看到计数参数的变化,下面是选项。

代码语言:javascript
复制
DECLARE @tbl TABLE(id INT, data INT)
INSERT INTO @tbl VALUES (1,1),(2,1),(3,2),(4,NULL)

SELECT data
      ,COUNT(*) Count_star
      ,COUNT(id) Count_id
      ,COUNT(data) Count_data
      ,COUNT(1) Count_literal
  FROM @tbl
 GROUP BY data

data        Count_star  Count_id    Count_data  Count_literal
----------- ----------- ----------- ----------- -------------
NULL        1           1           0           1
1           2           2           2           2
2           1           1           1           1
Warning: Null value is eliminated by an aggregate or other SET operation.

如果计算包含NULL的字段,您将看到与NULL处理方式的不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22837546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档