-1

これは私のテーブル構造です-

TABLE : T_LOG

---------------------------------------------------
 |    ID    |   AREA     |  USER_ID |   DATE
---------------------------------------------------
 |     1    |   AREA1    |     5    |  2000-05-17
---------------------------------------------------
 |     2    |   AREA1    |     5    |  2002-12-12
---------------------------------------------------
 |     3    |   AREA2    |     5    |  2003-02-19
---------------------------------------------------
 |     4    |   AREA1    |     5    |  2006-05-22
---------------------------------------------------
 |     5    |   AREA2    |     5    |  2006-07-29
---------------------------------------------------
 |     6    |   AREA3    |     5    |  2009-05-07
---------------------------------------------------

この表でUSER_ID 5は、数AREA秒で数DATE秒になっています。AREAその特定USER_IDがこれまでに行った(一意の) の数を選びたいと思います。

次のクエリ

SELECT COUNT(*) FROM T_LOG WHERE USER_ID = 5 GROUP BY 'AREA'

6 エントリのように 6 を返します。でも、3つのエリアのように一意に3を返したい( AREA1, AREA2, AREA3)

このクエリを修正するにはどうすればよいですか?

4

3 に答える 3

2

カウント(個別)を使用できます:

SELECT COUNT(DISTINCT AREA) FROM T_LOG WHERE USER_ID = 5
于 2013-06-03T07:50:24.143 に答える
0
SELECT COUNT(DISTINCT AREA), USER_ID FROM T_LOG WHERE USER_ID = 5
于 2013-06-03T07:50:03.340 に答える