Sql GroupArray由两个字段和第二个字段的和值组成
我使用的是ClickHouse,我希望按字段1(关键字)分组数据,在其他字段中显示uniq URL以及每个URL的单击总和值(其他字段) 原始数据Sql GroupArray由两个字段和第二个字段的和值组成,sql,database,clickhouse,Sql,Database,Clickhouse,我使用的是ClickHouse,我希望按字段1(关键字)分组数据,在其他字段中显示uniq URL以及每个URL的单击总和值(其他字段) 原始数据 keyword | URL | clicks | impression| position| ctr --------------------------------------------------------------------------------
keyword | URL | clicks | impression| position| ctr
------------------------------------------------------------------------------------------------
kw1 | https://mydomain.dev/url1.html | 10 | 100 | 2 | **0,10**
kw1 | https://mydomain.dev/other-url2.html | 20 | 434 | 3 | 0,05
kw1 | https://mydomain.dev/url3.html | 30 | 345 | 4 | 0,09
kw1 | https://mydomain.dev/url1.html | 10 | 40 | 5 | 0,25
kw1 | https://mydomain.dev/other-url2.html | 22 | 42 | 6 | 0,52
kw1 | https://mydomain.dev/other-url2.html | 23 | 43 | 7 | 0,53
Kw2 | https://mydomain.dev/other-url-data-a | 435 | 3243 | 1 | **0,13**
Kw2 | https://mydomain.dev/other-url-data-b | 34 | 43 | 4 | 0,79
Kw2 | https://mydomain.dev/other-url-data-c | 23 | 433 | 7 | 0,05
Kw2 | https://mydomain.dev/other-url-data-b | 232 | 343 | 13 | 0,68
Kw2 | https://mydomain.dev/other-url-data-a | 23 | 232 | 14 | 0,10
Kw2 | https://mydomain.dev/other-url-data-d | 3 | 34 | 15 | 0,09
Kw2 | https://mydomain.dev/other-url-data-d | 23 | 345 | 16 | 0,07
Kw2 | https://mydomain.dev/other-url-data-c | 2 | 43 | 17 | 0,05
预期结果:
- 从每个千瓦的最佳位置获取ctr(粗体)
- 并将uniq url分组,并按url汇总点击次数和印象
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','electricidad presupuestos electricos ejemplos','https://mydomain.dev/directory/ld-domain-de-presupuesto-de-elctricidad.php',0,1,7.0,0.0,'MOBILE','chl');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','modelo de carta de recomendacion laboral peru','https://mydomain.dev/directory/ld-domain-de-carta-de-662.php',0,1,5.0,0.0,'DESKTOP','per');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de ofrecimiento de servicios a una empresa','https://mydomain.dev/directory/ld-domain-carta-para-ofrecer-servicios.php',0,3,1.0,0.0,'DESKTOP','slv');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','ejemplo de estrofa','https://mydomain.dev/directory/ld-ejemplo-de-estrofa.php',0,1,28.0,0.0,'DESKTOP','nld');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de intención de servicios profesionales','https://mydomain.dev/directory/goto-domain-de-carta-de-384.php',0,1,5.0,0.0,'DESKTOP','mex');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','ejemplos de presupuesto base cero','https://mydomain.dev/directory/ld-domain-de-presupuesto-base-cero.php',0,1,92.0,0.0,'DESKTOP','mex');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','como se hace una carta de recomendacion','https://mydomain.dev/directory/ld-domain-de-carta-de-662.php',0,1,77.0,0.0,'DESKTOP','twn');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de oferta de productos a clientes','https://mydomain.dev/directory/ld-domain-carta-para-ofrecer-servicios.php',0,1,1.0,0.0,'DESKTOP','esp');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','investigación hemerográfica','https://mydomain.dev/directory/ld-ejemplo-de-ficha-hemerogrfica.php',0,1,44.0,0.0,'DESKTOP','rus');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de intención de servicios profesionales','https://mydomain.dev/directory/goto-domain-de-carta-de-384.php',2,6,2.0,0.0,'DESKTOP','col');
主表
表从文件中获取“Grupo”字段,我只需要该表的组(用于对类似KW进行分组)
用户数据\u数据:
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','electricidad presupuestos electricos ejemplos','https://mydomain.dev/directory/ld-domain-de-presupuesto-de-elctricidad.php',0,1,7.0,0.0,'MOBILE','chl');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','modelo de carta de recomendacion laboral peru','https://mydomain.dev/directory/ld-domain-de-carta-de-662.php',0,1,5.0,0.0,'DESKTOP','per');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de ofrecimiento de servicios a una empresa','https://mydomain.dev/directory/ld-domain-carta-para-ofrecer-servicios.php',0,3,1.0,0.0,'DESKTOP','slv');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','ejemplo de estrofa','https://mydomain.dev/directory/ld-ejemplo-de-estrofa.php',0,1,28.0,0.0,'DESKTOP','nld');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de intención de servicios profesionales','https://mydomain.dev/directory/goto-domain-de-carta-de-384.php',0,1,5.0,0.0,'DESKTOP','mex');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','ejemplos de presupuesto base cero','https://mydomain.dev/directory/ld-domain-de-presupuesto-base-cero.php',0,1,92.0,0.0,'DESKTOP','mex');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','como se hace una carta de recomendacion','https://mydomain.dev/directory/ld-domain-de-carta-de-662.php',0,1,77.0,0.0,'DESKTOP','twn');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de oferta de productos a clientes','https://mydomain.dev/directory/ld-domain-carta-para-ofrecer-servicios.php',0,1,1.0,0.0,'DESKTOP','esp');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','investigación hemerográfica','https://mydomain.dev/directory/ld-ejemplo-de-ficha-hemerogrfica.php',0,1,44.0,0.0,'DESKTOP','rus');
INSERT INTO table_name (fecha,consulta,landing,clicks,impresiones,posicion,ctr,dispositivo,pais) VALUES ('2020-06-22','carta de intención de servicios profesionales','https://mydomain.dev/directory/goto-domain-de-carta-de-384.php',2,6,2.0,0.0,'DESKTOP','col');
文件中的数据
"grupo" | "consulta"
-----------------------------------------------------------
pedido | carta de pedido ejemplo
carta | carta de ofrecimiento de servicios a una empresa
carta | carta de intención de servicios profesionales
pedido | carta de pedido
carta | carta de oferta de productos a clientes
carta | carta de intención de servicios profesionales
pedido | carta de pedido ejemplo
carta | carta de presentacion a una empresa ofreciendo servicios
otros | rescisión de contrato modelo
pedido | carta de pedidos ejemplos
carta | carta de presentacion de empresas de servicios
carta | carta solicitando beca universitaria
pedido | carta comercial de pedido
carta | carta a clientes para ofrecer servicios
otros | casilla 99 modelo 390
pedido | carta de pedido
carta | carta de oferta de servicios
carta | carta de intencion de renta
pedido | carta de pedido
carta | carta de ofrecimiento de productos
otros | contrato de leasing modelo
pedido | carta de pedidos
carta | carta de presentacion de empresa de servicios
otros | rescisión de contrato modelo
pedido | carta de pedidos
carta | carta de presentacion de empresa para ofrecer productos
carta | modelo de carta de intencion academica
pedido | carta de solicitud de pedido
carta | carta de presentacion de servicios
otros | modelo de solicitud para beca de estudios
pedido | carta de solicitud de pedido
carta | carta de presentacion de servicios
otros | anexo ampliacion contrato de arras
carta | carta de solicitud de un producto
carta | carta para ofrecer servicios
otros | modelo de rescisión de contrato
pedido | carta comercial pedido
carta | carta a clientes para ofrecer servicios
otros | formato de rescisión de contrato de compraventa de inmueble
pedido | carta de anulacion de pedido
carta | carta a clientes para ofrecer servicios
otros | contrato de trabajo para extranjeros en chile
pedido | carta de pedido
carta | carta de ofrecer servicios
otros | modelo de recision de contrato
pedido | carta de pedido
carta | carta de oferta de servicios
otros | formato de rescisión de contrato de prestacion de servicios
pedido | carta de pedido
carta" | carta de ofrecimiento de servicios
我需要:
对于我需要的每个“grupo”(包含许多KW)
每个组以及每个consulta:in组的所有不同“consulta”字段
-“位置”字段最低的“CTR”值
-最后日期的“位置”
- 每个不同“顾问”的点击次数和印象
- %对小组中每个顾问的印象和点击进行累积
SELECT
grupo,
groupUniqArray(consulta) as KWS,
groupUniqArray(landing) as landings,
topK(1)(mediaPonderada)[1] AS PosicionFrecuente,
anyLast(mediaPonderada) AS UltimaPosicion,
varSamp(imp) AS varianza2,
sqrt(varianza2) AS desviacion2,
stddevSamp(imp) AS stdImp2,
count() AS cnt,
groupArray((consulta, imp, clicks2, round((clicks2 * 100) / imp, 3), mediaPonderada)) AS consulta_imp,
arraySum(x -> (x.2), consulta_imp) AS total_imp,
total_imp / cnt AS media,
arraySum(x -> (x.3), consulta_imp) AS total_clicks,
round((total_clicks * 100) / total_imp, 2) AS ctr,
arrayMap(x -> ((100 / total_imp) * (x.2)), consulta_imp) AS percent_imp,
arrayCumSum(percent_imp) AS acc_percent_imp,
consulta_imp[1] AS total_ctr2,
total_ctr2.4 AS ctr2
FROM
(
SELECT
grupo,
consulta,
landing,
quantileDeterministic(0.5)(impresiones, 10) AS detImp,
avg(impresiones) AS medImp,
varSamp(impresiones) AS varMuestraImp,
varPop(impresiones) AS varPobImp,
count() AS cnt,
sum(clicks) AS clicks2,
sum(impresiones) AS imp,
round((clicks2 * 100) / imp, 2) AS ctr,
round((posicion * impresiones) / impresiones, 0) AS mediaPonderada,
arrayMap(2)(x -> round(x, 2), max([round(posicion, 0), clicks, impresiones])) AS arrclicks,
varSamp(impresiones) AS varianza,
avg(impresiones) AS media,
stddevSamp(impresiones) AS stdImp,
stddevPop(impresiones) AS stdPopImp,
sqrt(varianza) AS desviacion,
stdImp / media AS desvMedia
FROM (
SELECT
fecha,
consulta,
landing,
clicks,
impresiones,
posicion,
ctr,
dispositivo,
pais,
Grupo as grupo
FROM
(
SELECT *
FROM GSC_https_Modelode_com2 ghmc
WHERE fecha > '2020-01-01'
) AS t1
LEFT JOIN
(
SELECT
consulta,
any(Grupo) AS Grupo
FROM file('kw-2020.csv', 'CSVWithNames', 'fecha Date, consulta String, landing String, clicks UInt32, impresiones UInt32, posicion Float32, ctr Float32, dispositivo String, pais String,`Raiz semantica` String,Volumen UInt32,clickstream UInt32,cpc Float32,Grupo String')
GROUP BY consulta
) AS t2 USING (consulta)
ORDER BY fecha ASC
)
WHERE (fecha > '2020-06-01')
GROUP BY
grupo,
mediaPonderada,
landing,consulta
ORDER BY
mediaPonderada ASC,
imp DESC
)
GROUP BY grupo
不起作用,url是重复的,不求和点击数和点击数
kw |miArr
--------|---------------------------------------------------------------------------------------------------------------------------------
kw1 |['[https://mydomain.dev/url1.html, 2]','[https://mydomain.dev/url1.html, 1]','[https://mydomain.dev/url1.html#alternativas, 0]','
kw2 |['[https://mydomain.dev/url2.html, 1]','[https://mydomain.dev/url2.html, 0]']
谢谢Denny,但是如何选择第一个CTR值呢?groupArray(1)(CTR)Denny,首先对不起我的英语,我不能完全解释,但是。我需要位置较低的CTR值,我不在乎。我不会说英语。我只会说SQL。请给我们创建表/插入测试数据,否则您的问题很难理解(
fecha
Date,consulta
String,landing
String,clicks
UInt32,impressions
UInt32,posicion
Float32,ctr
dispositivoString,pais
String)引擎=合并树(fecha,landing,8192)第二个表,(文件csv)!从文件('kw-2020.csv','CSVWithNames','fecha Date,consulta String,landing String,clicks UInt32,impressions UInt32,posicion Float32,ctr Float32,dispositivo String,pais String,`,Volumen UInt32,clickstream UInt32,cpc Float32,Grupo String')我需要:对于每个“Grupo”(包含许多kw)我需要-每个组的所有不同的“consulta”字段,以及每个consulta:in group-其中“posicion”字段最低的“CTR”值-“posicion”最后日期-每个不同的“consulta”的点击次数和点击次数-组中每个consulta的点击次数和点击次数的累积百分比-所有不同的“登陆”和“点击次数”总和和“印象”-%每个URL的印象和点击累积如何与您共享插入或数据?
SELECT
grupo,
groupUniqArray(consulta) as KWS,
groupUniqArray(landing) as landings,
topK(1)(mediaPonderada)[1] AS PosicionFrecuente,
anyLast(mediaPonderada) AS UltimaPosicion,
varSamp(imp) AS varianza2,
sqrt(varianza2) AS desviacion2,
stddevSamp(imp) AS stdImp2,
count() AS cnt,
groupArray((consulta, imp, clicks2, round((clicks2 * 100) / imp, 3), mediaPonderada)) AS consulta_imp,
arraySum(x -> (x.2), consulta_imp) AS total_imp,
total_imp / cnt AS media,
arraySum(x -> (x.3), consulta_imp) AS total_clicks,
round((total_clicks * 100) / total_imp, 2) AS ctr,
arrayMap(x -> ((100 / total_imp) * (x.2)), consulta_imp) AS percent_imp,
arrayCumSum(percent_imp) AS acc_percent_imp,
consulta_imp[1] AS total_ctr2,
total_ctr2.4 AS ctr2
FROM
(
SELECT
grupo,
consulta,
landing,
quantileDeterministic(0.5)(impresiones, 10) AS detImp,
avg(impresiones) AS medImp,
varSamp(impresiones) AS varMuestraImp,
varPop(impresiones) AS varPobImp,
count() AS cnt,
sum(clicks) AS clicks2,
sum(impresiones) AS imp,
round((clicks2 * 100) / imp, 2) AS ctr,
round((posicion * impresiones) / impresiones, 0) AS mediaPonderada,
arrayMap(2)(x -> round(x, 2), max([round(posicion, 0), clicks, impresiones])) AS arrclicks,
varSamp(impresiones) AS varianza,
avg(impresiones) AS media,
stddevSamp(impresiones) AS stdImp,
stddevPop(impresiones) AS stdPopImp,
sqrt(varianza) AS desviacion,
stdImp / media AS desvMedia
FROM (
SELECT
fecha,
consulta,
landing,
clicks,
impresiones,
posicion,
ctr,
dispositivo,
pais,
Grupo as grupo
FROM
(
SELECT *
FROM GSC_https_Modelode_com2 ghmc
WHERE fecha > '2020-01-01'
) AS t1
LEFT JOIN
(
SELECT
consulta,
any(Grupo) AS Grupo
FROM file('kw-2020.csv', 'CSVWithNames', 'fecha Date, consulta String, landing String, clicks UInt32, impresiones UInt32, posicion Float32, ctr Float32, dispositivo String, pais String,`Raiz semantica` String,Volumen UInt32,clickstream UInt32,cpc Float32,Grupo String')
GROUP BY consulta
) AS t2 USING (consulta)
ORDER BY fecha ASC
)
WHERE (fecha > '2020-06-01')
GROUP BY
grupo,
mediaPonderada,
landing,consulta
ORDER BY
mediaPonderada ASC,
imp DESC
)
GROUP BY grupo
kw |miArr
--------|---------------------------------------------------------------------------------------------------------------------------------
kw1 |['[https://mydomain.dev/url1.html, 2]','[https://mydomain.dev/url1.html, 1]','[https://mydomain.dev/url1.html#alternativas, 0]','
kw2 |['[https://mydomain.dev/url2.html, 1]','[https://mydomain.dev/url2.html, 0]']
select keyword, groupArray((URL, cl, imp)), sum(cl), sum(imp)
from (
from keyword,URL, sum(clicks) cl, sum(impression) imp
group by keyword,URL)
group by keyword