количество месяцев в таблице для каждого отдельного значения

#sql

Вопрос:

у меня проблема с sql-запросом. У меня есть таблица с акциями, в которой есть много акций, но в одной таблице.

например:

(там все в одной таблице):

 **wkn - name - stock - date** lt;brgt; 12345 - Tesla - 200.92 - 2021.03.13 12345 - Tesla - 201.42 - 2021.04.14 12345 - Tesla - 203.59 - 2021.05.15 67890 - Amazon - 1002.33 - 2021.06.13 67890 - Amazon - 1005.34 - 2021.07.16 67890 - Amazon - 1012.99 - 2021.08.19  

я хочу знать количество месяцев, в течение которых существует стоимость акции для каждого отдельного человека.

например:

есть акции для tesla на 20 месяцев.

и вот вопрос, который я пытался задать.
( запрос находится в цикле foreach)
(значение $[‘wkn’] — это каждый отдельный wkn из таблицы )

 $kurse1_monate= $this-gt;_db-gt;prepare("SELECT wkn, TIMESTAMPDIFF(MONTH, min(SELECT date WHERE wkn LIKE '" . $value['wkn'] . "'), max(SELECT date WHERE wkn LIKE '" . $value['wkn'] . "')) FROM kurse1 WHERE wkn LIKE '" . $value['wkn'] . "' GROUP BY wkn"); $kurse1_monate-gt;execute(); $this-gt;_kurse1_monate = $kurse1_monate-gt;fetchAll(PDO::FETCH_ASSOC);  

Комментарии:

1. С [‘wkn’] вы имеете в виду строку или имя ?

2. Так что это цикл foreach:

3. foreach ($this-gt;_wkn как $ключ =gt;gt; $значение)

4. и wkn-это квази каждое имя Индивидуально

Ответ №1:

Я попытался написать что-то, что, по моему мнению, по крайней мере дало бы хорошее представление о том, что я имел в виду. Не лучший в sql, но я думаю, что его можно прочитать.

 SELECT [months] = FLOOR(A.[currentstock] / (stockdiff / monthdiff))  FROM (  SELECT monthdiff = DATEDIFF(MONTH, min(date), max(date))   , stockdiff = max(stock ) - min(stock)  , currentstock = min(stock)   FROM kurse1 WHERE wkn LIKE 12345 GROUP BY wkn  ) A