2010-06-15 64 views
1

假设我有一个名为CustomerId的列。 此表的实例的例子是:计数客户的实例

CustomerId 
14 
12 
11 
204 
14 
204 

我想写计数客户ID的出现次数的数量的查询。 最后,我想有这样的结果:

CustomerId  NumberOfOccurences 
14    2 
12    1 
11    1 
204    2 
14    1 

我不能想办法做到这一点。

+1

这听起来很像功课...如果是这样,请标记为这样。 – 2010-06-15 16:04:39

+0

不,它不是。我正在研究一个项目,现在。 – Mikae 2010-06-15 16:55:45

回答

10

这是

SELECT CustomerId, count(*) as NumberOfOccurences 
    FROM tablex GROUP BY CustomerId; 
1

Practice exercise #3此页上组的最基本的例子说明如何做到这一点。

CREATE TABLE customers 
( customer_id  number(10) not null, 
    customer_name varchar2(50) not null, 
    city varchar2(50), 
    CONSTRAINT customers_pk PRIMARY KEY (customer_id) 
);   
INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7001, 'Microsoft', 'New York'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7002, 'IBM', 'Chicago'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7003, 'Red Hat', 'Detroit'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7004, 'Red Hat', 'New York'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7005, 'Red Hat', 'San Francisco'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7006, 'NVIDIA', 'New York'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7007, 'NVIDIA', 'LA'); 

INSERT INTO customers (customer_id, customer_name, city) 
VALUES (7008, 'NVIDIA', 'LA'); 

解决方案:

下面的SQL语句将返回不同的城市数量在客户表中的每个CUSTOMER_NAME:

SELECT customer_name, COUNT(DISTINCT city) as "Distinct Cities" 
FROM customers 
GROUP BY customer_name; 

这将返回以下结果集:

CUSTOMER_NAME Distinct Cities 
IBM  1 
Microsoft 1 
NVIDIA 2 
Red Hat  3