Ejemplo n.º 1
0
        public void AdvancedExample2_ApproximateBoundingCircleQuery()
        {
            Ctx.From <WeatherGeoTable>()
            .Where(x => x.month == 1)
            .Select(x => new
            {
                distance = (BqFunc.Acos(BqFunc.Sin(39.737567 * BqFunc.PI() / 180)
                                        * BqFunc.Sin((x.lat / 1000) * BqFunc.PI() / 180)
                                        + BqFunc.Cos(39.737567 * BqFunc.PI() / 180)
                                        * BqFunc.Cos((x.lat / 1000) * BqFunc.PI() / 180)
                                        * BqFunc.Cos((-104.9847179 - (x.@long / 1000)) * BqFunc.PI() / 180)) * 180 / BqFunc.PI())
                           * 60 * 1.1515,
                temp  = BqFunc.Average(x.mean_temp),
                lat   = BqFunc.Average(x.lat / 1000),
                @long = BqFunc.Average(x.@long / 1000)
            })
            .GroupBy(x => x.distance)
            .Into()
            .Where(x => x.distance < 100)
            .Select(x => new { x.distance, x.lat, x.@long, x.temp })
            .OrderBy(x => x.distance)
            .Limit(100)
            .ToString()
            .Is(@"
SELECT
  [distance],
  [lat],
  [long],
  [temp]
FROM
(
  SELECT
    ((((ACOS(((SIN(((39.737567 * PI()) / 180)) * SIN(((([lat] / 1000) * PI()) / 180))) + ((COS(((39.737567 * PI()) / 180)) * COS(((([lat] / 1000) * PI()) / 180))) * COS((((-104.9847179 - ([long] / 1000)) * PI()) / 180))))) * 180) / PI()) * 60) * 1.1515) AS [distance],
    AVG([mean_temp]) AS [temp],
    AVG(([lat] / 1000)) AS [lat],
    AVG(([long] / 1000)) AS [long]
  FROM
    [weather_geo.table]
  WHERE
    ([month] = 1)
  GROUP BY
    [distance]
)
WHERE
  ([distance] < 100)
ORDER BY
  [distance]
LIMIT 100
".TrimSmart());
        }
Ejemplo n.º 2
0
        public void Trigonometric()
        {
            Ctx.Select(() => BqFunc.Acos(0.5)).ToFlatSql().Is("SELECT ACOS(0.5)");
            Ctx.Select(() => BqFunc.Acosh(2.4)).ToFlatSql().Is("SELECT ACOSH(2.4)");
            Ctx.Select(() => BqFunc.Asin(1.2)).ToFlatSql().Is("SELECT ASIN(1.2)");
            Ctx.Select(() => BqFunc.Asinh(2.3)).ToFlatSql().Is("SELECT ASINH(2.3)");
            Ctx.Select(() => BqFunc.Atan(2.3)).ToFlatSql().Is("SELECT ATAN(2.3)");
            Ctx.Select(() => BqFunc.Atanh(0.4)).ToFlatSql().Is("SELECT ATANH(0.4)");
            Ctx.Select(() => BqFunc.Cos(2.3)).ToFlatSql().Is("SELECT COS(2.3)");
            Ctx.Select(() => BqFunc.Cosh(2.3)).ToFlatSql().Is("SELECT COSH(2.3)");
            Ctx.Select(() => BqFunc.Sin(2.3)).ToFlatSql().Is("SELECT SIN(2.3)");
            Ctx.Select(() => BqFunc.Sinh(2.3)).ToFlatSql().Is("SELECT SINH(2.3)");
            Ctx.Select(() => BqFunc.Tan(2.3)).ToFlatSql().Is("SELECT TAN(2.3)");
            Ctx.Select(() => BqFunc.Tanh(2.3)).ToFlatSql().Is("SELECT TANH(2.3)");

            Ctx.Select(() => BqFunc.Atan2(2.4, 1.2)).ToFlatSql().Is("SELECT ATAN2(2.4, 1.2)");
        }