1. ホーム
  2. sql

[解決済み] 2つの列を分割するには?

2022-01-31 17:53:03

質問事項

結合されたテーブルから2つのカラムを分割しようとしましたが、結果(relative_durationカラムの値)は常に0です。クエリーは以下の通りです。

    SELECT t1.[user_1]
      ,t1.[user_2]
      ,t1.[total_duration]
      ,(t1.total_duration/t2.[total_events_duration]) AS relative_duration
  FROM [CDRs].[dbo].[aggregate_monthly_events] AS t1 INNER JOIN [CDRs].[dbo].[user_events_monthly_stats] AS t2 ON t1.[user_1] = t2.[user_1]

テーブルt1からカラムtotal_durationをテーブルt2からカラムtotal_events_durationに分割するために、上記のクエリの何が間違っているのか、どのように修正するのか、誰か知っていますか?

ちなみに、除算を減算に置き換えて("/" を "-" )試してみましたが、その場合、列 relative_duration は 0 ではありません。

どのように解決するのですか?

おそらく、これらの列は整数の列で、計算結果が同じ型になることが理由でしょう。

例)このようにすると

SELECT 1 / 2

を実行すると、0が返されます。これは明らかに本当の答えではありません。 そこで、値を例えば10進数に変換し、代わりにそのデータ型に基づいて計算を行います。

SELECT CAST(1 AS DECIMAL) / 2

0.500000を与える