以下ジャンルテーブルがあり、ジャンルごとに行数をカウントしたいです。
|gn1|gn1|g2|gn2|
|:--|:--:|--:|
|1000|メンズファッション|100|トップス
|1000 | メンズファッション |200 | アウター
|1000 | メンズファッション |300 | ボトムス
|2000 | レディースファッション|400 | トップス
|2000 | レディースファッション|500 | ボトムス
|2000 | レディースファッション|600 | アウター
<条件>
メンズファッション>トップス → 1
メンズファッション>トップス以外 →2
レディース>トップス → 3
レディース>トップス以外 → 4
レディース>トップスとボトムス以外 →5
<<条件の結果>>
| no | simple_count(count(*)) |
|---|---|
| 1 | xxxx |
| 2 | xxxx |
| 3 | xxxx |
| 4 | xxxx |
| 5 | xxxx |
<記述した内容> select case when g1 = 1000 and g2 = 2000 then 1 when g1 = 1000 then 2 when g2 = 400 then 3 when g2 <> 400 then 4 else 5 end simple_count, count(*) as count from detail_tbl a inner join order_tbl o on a.order_no = o.order_no inner join genre_dimension b on a.genre_id = b.genre_id where b.g1 in (1000,2000) group by 1 ;
and や <> の書き方が正しくないため、1から5までの
カウント結果が抽出されません。
1~5の条件の記述の方法をご教示いただけないでしょうか。
動作確認環境:teradata studio express
DBはteradataなんでしょうか?
count()を使用しているんですから、group by も含めたSQLの全文での質問にして下さい。
DBはteradata です。
SQL全文を記載しましたので、ご確認いただければ幸いです。よろしくお願いいたします。
>[gn1]| [gn1] |[g2] | [g2]
CREATE TABLE も含めて、SQLを https://teratail.com/help/question-tips#questionTips3-7 の [コード] に追加・修正してください。
[Teradata Database]タグを追加依頼されては?
現在ないタグを追加したい https://teratail.com/help#add-tag
CREATE TABLE って理解できませんか? https://docs.teradata.com/reader/RknaJAFX_2CtUAZfB4_rTA/DsrbLBZEC0gAkUVqtQyNyg
g1, g2 がどのテーブルのカラムかを含めて、 detail_tbl, order_tbl, genre_dimension のテーブル定義情報を提示できませんか?
例の内容だと4が1100で5が600となってレディースのアウターは2か所でカウントされるという認識で間違いないですか?
5 の条件については
g1:2000のレディースジャンルのうち、
サブジャンルのgn2:400と500以外のレディースジャンルの数を
カウントしたいのです。
表でいうところだと、「no」列の5には”1”とカウントされればいいのですが。
when b.g1 = 2000 and b.g2 <> 400 and b.g2 <> 500 then 5
と書いてもみましたが、
上記表の行数でいうところ、3がカウントされてしまいます。
すみません、読み間違えてました。
聞きたかったのは4と5の両方にカウントされる列があるのは正しいのかということです
>4と5の両方にカウントされる列があるのは正しい
→はい、正しいです。
回答2件
あなたの回答
tips
プレビュー