This gets the 25th percentile value of the GM field when field GICS Sector = "Energy":
Code:
SELECT
tblFirst250.[GICS Sector]
, 0.75*(
SELECT Max(GM)
FROM tblFirst250
WHERE tblFirst250.GM IN (
SELECT TOP 25 PERCENT GM
FROM tblFirst250
WHERE tblFirst250.[GICS Sector ]= "Energy" AND GM Is Not Null ORDER BY GM)) + 0.25*(
SELECT Min(GM)
FROM tblFirst250
WHERE tblFirst250.GM IN (
SELECT TOP 75 PERCENT GM
FROM tblFirst250
WHERE tblFirst250.[GICS Sector] = "Energy" AND GM Is Not Null ORDER BY GM DESC)
) AS 25Percentile
FROM tblFirst250
WHERE tblFirst250.[GICS Sector] = "Energy"
GROUP BY tblFirst250.[GICS Sector];
...which correctly produces:
GICS Sector, 25Percentile
Energy, -1.2
Now I am trying to get all of the 25th percentiles for each GICS Sector. It would look something like this:
GICS Sector, 25Percentile
Energy, -1.2
Industrials, [some value]
Materials, [some value] ...etc.
Here is one of my 500 attempts, which does not work correctly:
Code:
SELECT
tblFirst250.[GICS Sector]
, 0.75*(
SELECT Max(GM)
FROM tblFirst250
WHERE tblFirst250.GM IN (
SELECT TOP 25 PERCENT GM
FROM tblFirst250
WHERE (tblFirst250.[GICS Sector ] = "Energy" OR "Industrials") AND GM Is Not Null ORDER BY GM)) + 0.25*(
SELECT Min(GM)
FROM tblFirst250
WHERE tblFirst250.GM IN (
SELECT TOP 75 PERCENT GM
FROM tblFirst250
WHERE (tblFirst250.[GICS Sector ] = "Energy" OR "Industrials") AND GM Is Not Null ORDER BY GM DESC)
) AS 25Percentile
FROM tblFirst250
WHERE tblFirst250.[GICS Sector] = "Energy" OR "Industrials"
GROUP BY tblFirst250.[GICS Sector];
...the above results in the same value for all GICS Sectors. I want a different 25th percentile value for each GICS Sector.