I have the following input data(A sample only):
ListID | date | Value |
---|---|---|
0 | 2022-10-17 | 0 |
1 | 2022-10-17 | 43.050430504 |
3 | 2022-10-17 | 40.000000000 |
4 | 2022-10-17 | 38.636363636 |
5 | 2022-10-17 | 20.714285714 |
I am little bit confused about two below query results.
First Query:
SELECT
ListID,
CASE
WHEN date>'2022-07-22'
THEN avg(value)
ELSE NULL
END AS 'Value_Before_Rate_Change'
FROM
TB01 where date like '2022%' and ListID=1;
Output first query:
Value_Before_Rate_Change |
---|
NULL |
Second Query
select avg(value)
from TB01
where date like '2022%'
and ListID=1
and date>'2022-07-22';
Output second query:
avg(value) |
---|
57.773696518595 |
Can someone show me why I am always getting NULL as an result when I use CASE
.
Update:
I used below group by as well. But same result
SELECT
ListID,
CASE
WHEN date>'2022-07-22'
THEN avg(value)
ELSE NULL
END AS 'Value_Before_Rate_Change'
FROM
TB01 where date like '2022%' and ListID=1 group by ListID;
CodePudding user response:
select listID
,avg(case when date > '2022-07-22' then value end) as Value_Before_Rate_Change
from t
group by listID
listID | Value_Before_Rate_Change |
---|---|
0 | 0.0000000000000000 |
1 | 43.0504305040000000 |
3 | 40.0000000000000000 |
4 | 38.6363636360000000 |
5 | 20.7142857140000000 |