Google bigquery 根据相同组合bigQuery的出现情况找出百分比

Google bigquery 根据相同组合bigQuery的出现情况找出百分比,google-bigquery,Google Bigquery,这是我能得到的最接近的答案,但问题不是很清楚: name id -------------------- ramesh 1 sonali 1 yash 2 garima 3 dipti 3 vashali 4 karishma 5 ramesh 6 sonali 6 --------------

这是我能得到的最接近的答案,但问题不是很清楚:

name             id
--------------------
ramesh           1
sonali           1
yash             2
garima           3
dipti            3
vashali          4
karishma         5
ramesh           6
sonali           6
--------------------

output:
name1 with name2 %
--------------------------------
ramesh      sonali      66.66%  
garima      Dipti       16.66%  

名字后面跟着他们的idI编辑了这个问题的格式,但我不确定你在问什么。name1和name2之间有什么区别,如果有name3会发生什么?@ramespatel-如果能了解你如何以66.66%和16.66%的得票率结束上述例子,那就太好了。对于这个例子@Mikhail Berlyant,我不认为有任何逻辑可以以这样的数字结束——我想计算两个名字的组合的数量,它们与相同的id组合在一起,然后从总记录中得到百分比(按id分组)。在我的查询中,我给出了一个例子,ramesh和sonali使用相同的id进行了2次合并,第一次使用id=1,第二次使用id=6。然后将其组合的百分比计算为(组合同时发生的次数/唯一id的总次数)*100-----(2/6)*100=66.66%
SELECT names, 100*ratio percent
FROM (
  SELECT names, COUNT(*) c, FIRST(names_c) names_c, RATIO_TO_REPORT(c) OVER() ratio
  FROM (
    SELECT id, GROUP_CONCAT(UNIQUE(name)) names, COUNT(*) names_c
    FROM 
    (SELECT 1 id, 'ramesh' name),
    (SELECT 1 id, 'sonali' name),
    (SELECT 2 id, 'rash' name),
    (SELECT 3 id, 'garima' name),
    (SELECT 3 id, 'dipti' name),
    (SELECT 4 id, 'vashali' name),
    (SELECT 5 id, 'karishma' name),
    (SELECT 6 id, 'ramesh' name),
    (SELECT 6 id, 'sonali' name),
    GROUP BY 1
  ) 
  GROUP BY names
)
WHERE names_c>1