0

私はまだSQLに足を踏み入れ始めています。日付のクエリとグループ化に問題があります。日付をグループ化したい。そして、この日付から、特定の日付範囲の名前、訪問の種類が表示されます。

以下の例では、 2012 年 1 月 1 日から 2012 年 12 月 31 日までの範囲で、訪問タイプが4の訪問者を照会したいとします。

サンプルテーブル付属

4

3 に答える 3

1
SELECT DISTINCT NAME 
FROM YOUR_tABLE 
WHERE (TYPE_OF_VISIT = 4) AND (DATE_OF_VISIT BETWEEN ? AND ?)

if you want the first visit of each customer within this range, then you should try sth like this

SELECT DISTINCT T1.NAME, T1.DATE_OF_VISIT 
FROM YOUR_TABLE T1
WHERE (T1.TYPE_OF_VISIT = 4) AND (T1.DATE_OF_VISIT BETWEEN ? AND ?)
AND T1.DATE_OF_VISIT = 
(SELECT MIN (T2.DATE_OF_VISIT) FROM YOUR_TABLE T2 WHERE T1.NAME=T2.NAME AND 
(T2.DATE_OF_VISIT BETWEEN ? AND ?))
于 2013-10-17T13:43:58.803 に答える
0

列 Date_of_visit に時間部分が含まれていない場合 (つまり、日付のみ)。以下を実行できます

SELECT NAME, TYPE_OF_VISIT
FROM appointment 
WHERE Type_of_visit = 4 
AND Date_of_visit >= '01/01/2012 ' 
AND Date_of_visit <= '31/12/2012'
GROUP BY NAME
于 2013-10-17T14:21:19.700 に答える
0

あなたは試すことができます:

select Name, Type_of_visit
from Appointment_table
where Date_of_visit between '2012-01-01 00:00:00' and '2012-12-31 23:59:59'
and Type_of_visit = 4;

結果をグループ化 (および訪問数を集計) したい場合:

select Name, Type_of_visit, COUNT(Type_of_visit) as Total_visits
from Appointment_table
where Date_of_visit between '2012-01-01 00:00:00' and '2012-12-31 23:59:59'
and Type_of_visit = 4
group by Name, Type_of_visit;

日付でグループ化すると、一意の日付ごとに行が得られますが、出力例からは、希望どおりには見えませんでした。

于 2013-10-17T13:45:58.967 に答える