1. ホーム
  2. sql

[解決済み】2つの列を分割する方法は?

2022-01-31 12:02:50

質問内容

結合されたテーブルから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を与える