SQL中是否可以计算不同值的数量?

时间:2014-03-28 20:39:15

标签: sql

我在想这个语句将会并且应该从我的表中选择不同的值,然后对它们进行计数,或者至少这是我想要在单独的列中。是否有可能计算SQL中不同值的数量,从我收集的可能不是。

问题:我可以计算姓氏的不同值的数量吗?

SQL语句:

select distinct c.LastName as 'Distinct Last Names', COUNT(*)
from Customer as c;

错误:

Msg 8120, Level 16, State 1, Line 1
Column 'Customer.LastName' is invalid in the select list because it is not contained 
in either an aggregate function or the GROUP BY clause.

输出 - 没有计数

'不同的姓氏'

LTest1 LTest2 LTest3

3 个答案:

答案 0 :(得分:3)

由于您在查询中没有Group by子句,Select中的所有列都应使用某种聚合,否则SQL将不满意。< / p>

试试这个

select COUNT(distinct c.LastName) 'Distinct Last Names'
from Customer as c;

答案 1 :(得分:1)

如果我正确理解您的问题,您希望将结果分为两列。

如果是,您可以使用 Group By

SELECT c.LastName as 'Distinct Last Names', COUNT(*) 
FROM Customer as c
GROUP BY c.LastName

答案 2 :(得分:0)

我会使用子查询。内部查询返回姓氏的distict列表。外部查询计算distict值。我更喜欢count(1)而不是count(*),因为不需要返回customer表中所有列的元数据。

SELECT COUNT(1)
FROM (
    SELECT DISTINCT LASTNAME 
    FROM CUSTOMER
) a