0

そこからテーブル構造があり、別の方法でクエリを作成する必要があります

テーブル構造

  1. id 一意の識別子

  2. code varchar(5) ヌルではありません

  3. Recording_date Datetime Not Null

  4. Max_Temp 数値 (5,2) NULL 以外

  5. Min_Temp 数値 (5,2) NULL 以外

この表にもいくつかのデータがあります。データは 2013 年と最初の 3 か月のみです。しかし、主なことは、次のような形式でデータを返さなければならないということです

ここに画像の説明を入力

そのようなロジックのクエリを作成するのを手伝ってください。

前もって感謝します。

4

3 に答える 3

1

1 日に 1 つの録音があると仮定すると、

SELECT
    DATEPART(m, Month_Start) + ' ' + DATEPART(yyyy, Month_Start)
    , Max_Temp_Days
    , CASE
        WHEN Denominator = 0 THEN 0
        ELSE (Max_Temp_Days / Denominator) * 100
      END AS Percent_Max_Temp_Days
    , Min_Temp_Days
    , CASE
        WHEN Denominator = 0 THEN 0
        ELSE (Min_Temp_Days / Denominator) * 100
      END AS Percent_Max_Temp_Days
FROM (
    SELECT 
        DATEADD(MONTH, DATEDIFF(MONTH, 0, Recording_Date), 0) Month_Start
        , Sum(CASE WHEN Max_Temp <= 0 THEN 1 END) Max_Temp_Days
        , Sum(CASE WHEN Min_Temp <= 0 THEN 1 END) Min_Temp_Days
        , COUNT(*) Denominator
    FROM TemperatureRecordings
    WHERE Recording_Date BETWEEN '2013-01-01' AND '2013-03-31'
    GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Recording_Date), 0)
) t
ORDER BY Month_Start
于 2013-07-11T07:20:34.897 に答える