Синусоида на графике - SQL - PullRequest
1 голос
/ 04 августа 2009

Я пытаюсь создать простую синусоидальную кривую в SQL, которая чередуется между значениями (0-23). ​​

У меня есть следующие переменные: x, который является текущим смещением. y, которое является назначенным смещением, и z, которое является моим максимальным значением (23).

Кто-нибудь, кто мог бы помочь мне с выражением? Погуглил и прочитал об этом, но пока не заставил его работать ..

Буду признателен за любые ответы ..

С наилучшими пожеланиями, Том

1 Ответ

4 голосов
/ 04 августа 2009

Для этого нужен какой-то фиктивный набор строк.

В Oracle:

SELECT  level - 1, SIN((level - 1) * 3.141592653 / 12)
FROM    dual
CONNECT BY
        level <= 24

В SQL Server 2005+:

WITH    rows AS
        (
        SELECT  0 AS level
        UNION ALL
        SELECT  level + 1
        FROM    rows
        WHERE   level <= 23
        )
SELECT  level, SIN((level) * 3.141592653 / 12)
FROM    rows

In PostgreSQL:

SELECT  level, SIN(level * 3.141592653 / 12)
FROM    generate_series(0, 23) level

В MySQL:

SELECT  level, SIN(level * 3.141592653 / 12)
FROM    (
        SELECT  0 AS level
        UNION ALL
        SELECT  1 AS level
        UNION ALL
        …
        /*
        Yes, you need to repeat it 24 times.

        Everyone who reads it: please call MySQL and ask them
        to implement generate_series.

        Thanks.
        */
        UNION ALL
        SELECT  23 AS level
        ) q
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...