2017-10-26 1 views
1

特定の文字列が発生する回数をカウントする必要がありますが、1つのIDが同じ文字列を複数回含む場合は、1回だけカウントします。基本的には、IDに対して一意的に発生する文字列の出現回数を数える必要があります。これは簡単なことだと思いますが、私が何をしているのか分かりません。ここに私の現在のコードは次のとおりです。一意のIDを持つ文字列のインスタンスをカウントする

SELECT 
RXNAME as Name, 
DUPERSID as ID, 
COUNT(RXNAME) as Number 
FROM 
`OmniHealth.PrescriptionsMEPS` 
GROUP BY 
ID, 
Name 
ORDER BY 
Number 

実行すると、それはすべてが助けを1感謝としてカウントしたと言います!

UPDATE: データセット:上記のコードで実行https://storage.googleapis.com/omnihealth/MepsPrescriptionData.csv

OUTPUT:

Row Name ID Number 
1 SUMATRIPTAN 68896102 1  
2 IBUPROFEN 65063102 1  
3 PENICILLN VK 66179101 1  
4 FUROSEMIDE 63217102 1  
5 HYSINGLA ER 70373101 1  
6 FUROSEMIDE 76090101 1  
7 SKELETAL MUSCLE RELAXANTS 78414101 1  
8 AMOXICILLIN 69467103 1  
9 TRAMADOL HCL 67667101 1  
10 PANTOPRAZOLE 60737102 1  
11 CARBAMIDE PEROXIDE 6.5% OTIC SOLN 63990104 1  
12 PROMETH/COD 68433101 1  
13 AZITHROMYCIN 79045102 1  
14 METRONIDAZOL 75414101 1  
15 DEXILANT 69625101 1  
16 TRAMADOL HCL 66890203 1  
17 AZITHROMYCIN 73838101 1  
18 COLCRYS 63856102 1  
19 PERMETHRIN 62103107 1  
20 ACETAMINOPHEN TAB 500 MG 62456102 1 
+0

名前とIDでグループ化すると、各IDのすべての名前が区別されます。クエリは正しいです。データに重複がない可能性があります。 –

+0

....おそらくサンプル開始データセットと望みの結果が私たちに啓示されます。 –

+0

私は問題を参照して、私はそこにデータセットの名前フィールドがあると確信しています。フィールドエイリアスは、定義されているのと同じレベルでは使用できません。あなたはIDであるGROUP BY、RXNAMEが必要です。 –

答えて

1

わからない、それはあなたが尋ねている場合 - あなたはDISTINCT COUNTを探している場合は - 以下に移動します。

#standardSQL 
SELECT 
    RXNAME AS Name, 
    COUNT(DISTINCT DUPERSID) AS Number 
FROM `OmniHealth.PrescriptionsMEPS` 
GROUP BY 1 
ORDER BY Number DESC 
+0

これは私が必要とするものに非常に近いです。しかし、それはまだ別の薬の名前を数えます。言葉にするのは難しいことですが、私は基本的に各薬を買った人の数が必要です。個々の人々は個々のIDを持っており、各薬は明らかに名前を持っています。私は各薬を何回買ったのか見たいですが、一人一薬あたり1回だけカウントします。私は別個のIDを数えようとしましたが、それでも各IDは1つずつ与えられました。私は本当にあなたの助けに感謝します! –

+0

は、入力と出力の例を提供しています!単純化した例がそれを作ってくれるので、私たちはあなたを助けることができます! –

+0

ちょうど私の答えを更新した元の投稿 –

0

これを試してみてください...あなたは別のフィールドの股関節にグループ分けされていますあなたは数えています。あなたはRXNAMEでグループ化することを意味していると思います。

SELECT 
RXNAME as Name, 
DUPERSID as ID, 
COUNT(RXNAME) as Number 
FROM 
`OmniHealth.PrescriptionsMEPS` 
GROUP BY 
ID, 
RXNAME 
ORDER BY 
Number 
+0

これを試してみても、すべてのものが1つカウントされます。私はそれほど言葉を言わなかったかもしれないので、別のところへ行ってください。言葉にするのは難しいことですが、私は基本的に各薬を買った人の数が必要です。個々の人々は個々のIDを持っており、各薬は明らかに名前を持っています。私は各薬を何回買ったのか見たいですが、一人一薬あたり1回だけカウントします。 –

+0

ああ、別個のRXNAMEの番号と各IDに表示された回数が必要だったように思えました。 –

0

私はあなたがしたいと思う:

SELECT DUPERSID as ID, COUNT(DISTINCT RXNAME) as Number 
FROM `OmniHealth.PrescriptionsMEPS` 
GROUP BY ID 
ORDER BY Number; 

これは、 "同じ文字列は" "RXNAMEに同じ値" を意味することを前提としています。

+0

それでも私はすべてを1つカウントします。言葉にするのは難しいことですが、私は基本的に各薬を買った人の数が必要です。個々の人々は個々のIDを持っており、各薬は明らかに名前を持っています。私は各薬を何回買ったのか見たいですが、一人一薬あたり1回だけカウントします。 @CarsonP。 –

+0

。 。'GROUP BY'節を変更しましたか? –

関連する問題