質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

1回答

619閲覧

SQLでユニークな訪問者数を月別に表示したい

norio1435

総合スコア7

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2021/07/27 08:41

編集2021/07/27 09:06

前提・実現したいこと

テーブル名:テスト

訪問日名前学年
2021-04-01 00:00:00.000TANAKA1
2021-04-02 00:00:00.000SUZUKI2
2021-05-01 00:00:00.000SATOU3
2021-04-01 00:00:00.000YAMADA1
2021-04-03 00:00:00.000TANAKA1
2021-04-04 00:00:00.000TANAKA1

このテーブルから、ユニークな訪問者数を月別に表示したいと考えています。

以下のSQLを実行しましたが、ユニークな訪問者数ではなく、のべ訪問者数になってしまいます。

select Month(t1.訪問日) as 月, SUM(CASE 学年 WHEN 1 THEN 1 ELSE 0 END) AS 学年1, SUM(CASE 学年 WHEN 2 THEN 1 ELSE 0 END) AS 学年2, SUM(CASE 学年 WHEN 3 THEN 1 ELSE 0 END) AS 学年3 from テスト t1 group by Month(t1.訪問日) order by Month(t1.訪問日)

実行結果↓

学年1学年2学年3
4410
5001

期待している実行結果↓

学年1学年2学年3
4210
5001

どのようにすれば期待している結果を得ることができるのでしょうか?
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

distinct を使用してCount()します。

SQL

1select 2 Month(t1.訪問日) as, 3 Count(distinct CASE 学年 WHEN 1 THEN 名前 END) AS 学年1, 4 Count(distinct CASE 学年 WHEN 2 THEN 名前 END) AS 学年2, 5 Count(distinct CASE 学年 WHEN 3 THEN 名前 END) AS 学年3 6from テスト t1 7group by Month(t1.訪問日) 8order by Month(t1.訪問日)

投稿2021/07/27 09:15

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

norio1435

2021/07/28 23:36

解決できました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問