以下查詢是默認值(在本例中爲INTEGER(21))與計算值(在此示例中爲COUNT(*))混合的示例。爲什麼count(*)返回一個無符號整數?
SELECT
dimension,
SUM(metric)
FROM (
SELECT
"dim1" AS dimension,
INTEGER(21) AS metric),
(
SELECT
dimension,
COUNT(*) AS metric
FROM (
SELECT
"dim2" AS dimension,
INTEGER(42) AS metric)
GROUP BY
dimension)
GROUP BY
dimension
運行此查詢時,它被拒絕,出現以下錯誤信息:
無法工會表:不兼容的類型。 'metric':TYPE_INT64'metric':TYPE_UINT64
換句話說,count操作返回一個無符號整數,而手動創建的整數是帶符號的。我理解count操作的下層邏輯,顯然它總是返回一個大於或等於0的整數。這同樣可以通過將COUNT(*)封裝在第11行的INTEGER構造函數中來避免我的示例查詢。我猜我真正的問題是:爲什麼COUNT(*)返回一個無符號整數而不是一個有符號整數(這將允許更清晰和更簡單的查詢,就像在其他類似SQL的環境中一樣)?
我完全不同意您的迴應,但我主要關心的是這是一個未記錄的功能/錯誤,它很難調試,並且使其他SQL環境變得更加困難。 –