2010-06-15 41 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