0

以下のような値を持つ2つのテーブルがあります。

**tbl_users**
user_ID      name     
1          somename1   
2          somename2   
3          somename3   

**tbl_interviews**
int_ID     user_ID      answer          date      
 1            1         sometextaba   2012-11-04 
 2            2         sometextxcec  2012-10-05
 3            1         sometextabs   2011-06-04
 4            3         sometextxcfc  2012-11-04
 5            3         sometextxcdn  2012-11-04

さて..今年とそれ以前にインタビューを受けた人を数えなければなりません。残念ながら、それらを選択することさえできません..私はこのようなことを試みています..しかし、それは機能していません(構文エラーをスローするのではなく、空の結果を与えます):

SELECT * FROM interviews WHERE ('YEAR(date) = 2012' AND 'YEAR(date) < 2012')
4

4 に答える 4

1

両方の条件を一致させることはできません。あなたはどちらかの状態を意味します

SELECT * FROM interviews WHERE ('YEAR(date) = 2012' OR 'YEAR(date) < 2012');

ただし、SARGable にします

SELECT * FROM interviews WHERE date < '2013-01-01');

SELECT * FROM interviews WHERE date < CONCAT('''', YEAR(CURDATE()), '-01-01''');
于 2012-11-08T12:21:43.307 に答える
0

のようなものを試してください

SELECT * FROM interviews WHERE YEAR(date) <= YEAR(GETDATE())

GETDATE() は基本的に現在の日付を返します。

インタビューされた人数を数えてみると、次のようになります。

SELECT COUNT(DISTINCT(id)) FROM interviews WHERE YEAR(date) <= YEAR(GETDATE())
于 2012-11-08T12:22:16.473 に答える
0

これを試して

select * from tbl_interviews where year(date)<='2012'
于 2012-11-08T12:24:03.727 に答える
0

クエリは次のようになります。

SELECT     COUNT(DISTINCT user_id) 
FROM       tbl_interviews

説明: あなたの質問は、「今年とそれ以前にインタビューを受けた人を数える必要があります。」

まず、この部分: 「今年およびその前の数年間」は、今年およびその前の毎年のインタビューを受けた人々を意味します。未来に発生するインタビューを行うことはできないため、これは本質的に、年に関係なくすべてのインタビューを意味します。

それが意図したものでない場合は、質問を言い換えてください。(私にはアイデアがあります。以下を参照してください)

「人を数える必要があります」については、インタビューの回数に関係なく、インタビューされた各個人を数えたいという意味だと思います。これは、COUNT(DISTINCT(user_id)) で行われる一意の user_id を単純にカウントすることによって行われます。

さて、あなたの「今年と数年前」については、おそらく次のことを意味していました。

「今年インタビューしたユーザー数と、今年より前の数年間にインタビューしたユーザー数を知りたい」場合、クエリは次のようになります。

SELECT     (
           SELECT COUNT(DISTINCT user_id)
           FROM   tbl_interviews
           WHERE  date >= CONCAT(YEAR(current_date()), '-01-01')
           ) thisyear
,          (
           SELECT COUNT(DISTINCT user_id)
           FROM   tbl_interviews
           WHERE  date < CONCAT(YEAR(current_date()), '-01-01')
           ) previousyears
于 2012-11-08T12:24:55.423 に答える