いくつかのフィールドを持つテーブルがあります。最初のフィールドはuserId
. ハッシュ関数を使用して、userId でデータを分割しています。
次のクエリを実行しています。
SELECT userId, HASH(userId) as hashedId, HASH(userId) % 3 as hashedIdMod3
FROM mydataset.mytable LIMIT 1000
たとえば、次のようになります。
-5655326518438853587 % 3 ==> -1 when it should be 2
HASH(27315207816077732041734307321022553299) is -3139846784539570547 and the remainder is -2 when divided by 3 when it should be 1
では、正の整数で割った余りが負になるのはなぜでしょうか?