From 9a77102f6e8d39bf7805483a2ed1a4af9e7338c4 Mon Sep 17 00:00:00 2001 From: Amandeep Singh Date: Tue, 13 Jan 2026 21:34:15 +0000 Subject: [PATCH 1/2] Add 2025 ecommerce SQL queries --- .../ecommerce/core_web_vitals_by_platform.sql | 72 +++++++ .../median_lighthouse_score_ecommsites.sql | 43 +++++ sql/2025/ecommerce/top_ecommerce.sql | 175 ++++++++++++++++++ .../ecommerce/top_payment_provider_by_geo.sql | 69 +++++++ sql/2025/ecommerce/top_payment_providers.sql | 170 +++++++++++++++++ sql/2025/ecommerce/top_shopsystem_by_geo.sql | 71 +++++++ sql/2025/ecommerce/top_vendors_crux_rank.sql | 64 +++++++ 7 files changed, 664 insertions(+) create mode 100644 sql/2025/ecommerce/core_web_vitals_by_platform.sql create mode 100644 sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql create mode 100644 sql/2025/ecommerce/top_ecommerce.sql create mode 100644 sql/2025/ecommerce/top_payment_provider_by_geo.sql create mode 100644 sql/2025/ecommerce/top_payment_providers.sql create mode 100644 sql/2025/ecommerce/top_shopsystem_by_geo.sql create mode 100644 sql/2025/ecommerce/top_vendors_crux_rank.sql diff --git a/sql/2025/ecommerce/core_web_vitals_by_platform.sql b/sql/2025/ecommerce/core_web_vitals_by_platform.sql new file mode 100644 index 00000000000..82f41b60f6b --- /dev/null +++ b/sql/2025/ecommerce/core_web_vitals_by_platform.sql @@ -0,0 +1,72 @@ +#standardSQL +# CrUX Core Web Vitals performance of Ecommerce vendors by device (fid was upated to inp, and is non optinal now) +CREATE TEMP FUNCTION IS_GOOD(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( + good / (good + needs_improvement + poor) >= 0.75 +); + +CREATE TEMP FUNCTION IS_NON_ZERO(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( + good + needs_improvement + poor > 0 +); + + +SELECT + client, + ecomm, + COUNT(DISTINCT origin) AS origins, + # Origins with good LCP divided by origins with any LCP. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(fast_lcp, avg_lcp, slow_lcp), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp), origin, NULL)) + ) AS pct_good_lcp, + + # Origins with good INP divided by origins with any inp. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(fast_inp, avg_inp, slow_inp), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(fast_inp, avg_inp, slow_inp), origin, NULL)) + ) AS pct_good_inp, + + # Origins with good CLS divided by origins with any CLS. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL)) + ) AS pct_good_cls, + + # Origins with good LCP, inp, and CLS divided by origins with any LCP, inp, and CLS. + SAFE_DIVIDE( + COUNT(DISTINCT IF( + IS_GOOD(fast_lcp, avg_lcp, slow_lcp) AND + IS_GOOD(fast_inp, avg_inp, slow_inp) AND + IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL + )), + COUNT(DISTINCT IF( + IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp) AND + IS_NON_ZERO(fast_inp, avg_inp, slow_inp) AND + IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL + )) + ) AS pct_good_cwv +FROM + `chrome-ux-report.materialized.device_summary` +JOIN ( + SELECT + _TABLE_SUFFIX AS client, + url, + app AS ecomm + FROM + `httparchive.technologies.2025_06_01_*` + WHERE + category = 'Ecommerce' AND + ( + app != 'Cart Functionality' AND + app != 'Google Analytics Enhanced eCommerce' + ) +) +ON + CONCAT(origin, '/') = url AND + IF(device = 'desktop', 'desktop', 'mobile') = client +WHERE + date = '2025-06-01' +GROUP BY + client, + ecomm +ORDER BY + origins DESC diff --git a/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql b/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql new file mode 100644 index 00000000000..9117674ba0f --- /dev/null +++ b/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql @@ -0,0 +1,43 @@ +WITH technologies AS ( + SELECT + client, + page, + category, + technology, + rank, + lighthouse, + COUNT(DISTINCT page) OVER (PARTITION BY client) AS total_websites + FROM `httparchive.all.pages`, + UNNEST(technologies) AS tech, + UNNEST(categories) AS category + WHERE + date = '2025-06-01' AND + is_root_page = TRUE +) + +SELECT + client, + rank, + technology, + ARRAY_AGG(DISTINCT category) AS categories, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.performance.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_performance, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.accessibility.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_accessibility, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.seo.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_seo, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.best-practices.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_best_practices, + ANY_VALUE(total_websites) AS total_websites, + COUNT(DISTINCT page) AS number_of_websites, + COUNT(DISTINCT page) / ANY_VALUE(total_websites) AS percent_of_websites +FROM technologies +WHERE + category = 'Ecommerce' AND + ( + technology != 'Cart Functionality' AND + technology != 'Google Analytics Enhanced eCommerce' + ) +GROUP BY + client, + rank, + technology +ORDER BY + client, + number_of_websites DESC diff --git a/sql/2025/ecommerce/top_ecommerce.sql b/sql/2025/ecommerce/top_ecommerce.sql new file mode 100644 index 00000000000..95c330c98b3 --- /dev/null +++ b/sql/2025/ecommerce/top_ecommerce.sql @@ -0,0 +1,175 @@ +#standardSQL +# Top Ecommerce platforms, compared to 2021 +# top_ecommerce.sql +SELECT + client, + 2025 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2025-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2025-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2024 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2024-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2024-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2023 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2023-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2023-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2022 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2022-08-01' AND -- noqa: CV09 + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2022-08-01' AND -- noqa: CV09 + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2021 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2021-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2021-07-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +ORDER BY + year DESC, + pct DESC diff --git a/sql/2025/ecommerce/top_payment_provider_by_geo.sql b/sql/2025/ecommerce/top_payment_provider_by_geo.sql new file mode 100644 index 00000000000..dd3a3145f15 --- /dev/null +++ b/sql/2025/ecommerce/top_payment_provider_by_geo.sql @@ -0,0 +1,69 @@ +#standardSQL +# payment popularity per geo +# top_payment_provider_by_geo.sql +WITH geo_summary AS ( + SELECT + `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.country_summary` + WHERE + yyyymm = 202506 + UNION ALL + SELECT + 'ALL' AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.device_summary` + WHERE + yyyymm = 202506 +) + +SELECT + * +FROM ( + SELECT + client, + geo, + payment, + COUNT(0) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct + FROM ( + SELECT DISTINCT + geo, + client, + CONCAT(origin, '/') AS url, + total + FROM + geo_summary + ) JOIN ( + SELECT DISTINCT + client, + cats, + technologies.technology AS payment, + page AS url + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + technologies.technology IS NOT NULL AND + cats = 'Payment processors' AND + technologies.technology != '' AND + date = '2025-06-01' AND + is_root_page + ) USING (client, url) + GROUP BY + client, + geo, + payment +) +WHERE + pages > 1000 +ORDER BY + pages DESC diff --git a/sql/2025/ecommerce/top_payment_providers.sql b/sql/2025/ecommerce/top_payment_providers.sql new file mode 100644 index 00000000000..e29d9fc84c8 --- /dev/null +++ b/sql/2025/ecommerce/top_payment_providers.sql @@ -0,0 +1,170 @@ +#standardSQL +# Top payment processors, compared to 2021 +# top_payment_providers.sql +SELECT + client, + 2025 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2025-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2025-06-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2024 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2024-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2024-06-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2023 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2023-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2023-06-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2022 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2022-08-01' AND -- noqa: CV09 + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2022-08-01' AND -- noqa: CV09 + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2021 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2021-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2021-07-01' AND + is_root_page +GROUP BY + client, + total, + payment +ORDER BY + year DESC, + pct DESC diff --git a/sql/2025/ecommerce/top_shopsystem_by_geo.sql b/sql/2025/ecommerce/top_shopsystem_by_geo.sql new file mode 100644 index 00000000000..98ea4d326ef --- /dev/null +++ b/sql/2025/ecommerce/top_shopsystem_by_geo.sql @@ -0,0 +1,71 @@ +#standardSQL +# Shopsystem popularity per geo +# top_shopsystem_by_geo.sql +WITH geo_summary AS ( + SELECT + `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.country_summary` + WHERE + yyyymm = 202506 + UNION ALL + SELECT + 'ALL' AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.device_summary` + WHERE + yyyymm = 202506 +) + +SELECT + * +FROM ( + SELECT + client, + geo, + app, + COUNT(0) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct + FROM ( + SELECT DISTINCT + geo, + client, + CONCAT(origin, '/') AS url, + total + FROM + geo_summary + ) JOIN ( + SELECT DISTINCT + client, + cats, + technologies.technology AS app, + page AS url + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + technologies.technology IS NOT NULL AND + cats = 'Ecommerce' AND + technologies.technology != 'Cart Functionality' AND + technologies.technology != 'Google Analytics Enhanced eCommerce' AND + technologies.technology != '' AND + date = '2025-06-01' AND + is_root_page + ) USING (client, url) + GROUP BY + client, + geo, + app +) +WHERE + pages > 1000 +ORDER BY + pages DESC diff --git a/sql/2025/ecommerce/top_vendors_crux_rank.sql b/sql/2025/ecommerce/top_vendors_crux_rank.sql new file mode 100644 index 00000000000..1c51e57fc3a --- /dev/null +++ b/sql/2025/ecommerce/top_vendors_crux_rank.sql @@ -0,0 +1,64 @@ +#standardSQL +# Ecommerce adoption per rank +# top_ecommerce_by_rank.sql + +SELECT + client, + ecommerce, + rank, + COUNT(DISTINCT url) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct +FROM ( + SELECT DISTINCT + client, + page AS url, + technologies.technology AS ecommerce + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + cats = 'Ecommerce' AND + date = '2025-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +) +JOIN ( + SELECT + client, + page AS url, + rank_magnitude AS rank + FROM + `httparchive.all.pages`, + UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude + WHERE + rank <= rank_magnitude AND + date = '2025-06-01' AND + is_root_page +) +USING (client, url) +JOIN ( + SELECT + client, + rank_magnitude AS rank, + COUNT(0) AS total + FROM + `httparchive.all.pages`, + UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude + WHERE + rank <= rank_magnitude AND + date = '2025-06-01' AND + is_root_page + GROUP BY + client, + rank_magnitude +) +USING (client, rank) +GROUP BY + client, + ecommerce, + rank +ORDER BY + rank, + pages DESC From dc8b05726c712117c627b2eeb0a216f03b049890 Mon Sep 17 00:00:00 2001 From: Barry Pollard Date: Wed, 14 Jan 2026 20:28:42 +0000 Subject: [PATCH 2/2] Update to July --- .../ecommerce/core_web_vitals_by_platform.sql | 144 +++---- .../median_lighthouse_score_ecommsites.sql | 86 ++--- sql/2025/ecommerce/top_ecommerce.sql | 350 +++++++++--------- .../ecommerce/top_payment_provider_by_geo.sql | 138 +++---- sql/2025/ecommerce/top_payment_providers.sql | 340 ++++++++--------- sql/2025/ecommerce/top_shopsystem_by_geo.sql | 142 +++---- sql/2025/ecommerce/top_vendors_crux_rank.sql | 128 +++---- 7 files changed, 664 insertions(+), 664 deletions(-) diff --git a/sql/2025/ecommerce/core_web_vitals_by_platform.sql b/sql/2025/ecommerce/core_web_vitals_by_platform.sql index 82f41b60f6b..3b29d25c8cf 100644 --- a/sql/2025/ecommerce/core_web_vitals_by_platform.sql +++ b/sql/2025/ecommerce/core_web_vitals_by_platform.sql @@ -1,72 +1,72 @@ -#standardSQL -# CrUX Core Web Vitals performance of Ecommerce vendors by device (fid was upated to inp, and is non optinal now) -CREATE TEMP FUNCTION IS_GOOD(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( - good / (good + needs_improvement + poor) >= 0.75 -); - -CREATE TEMP FUNCTION IS_NON_ZERO(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( - good + needs_improvement + poor > 0 -); - - -SELECT - client, - ecomm, - COUNT(DISTINCT origin) AS origins, - # Origins with good LCP divided by origins with any LCP. - SAFE_DIVIDE( - COUNT(DISTINCT IF(IS_GOOD(fast_lcp, avg_lcp, slow_lcp), origin, NULL)), - COUNT(DISTINCT IF(IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp), origin, NULL)) - ) AS pct_good_lcp, - - # Origins with good INP divided by origins with any inp. - SAFE_DIVIDE( - COUNT(DISTINCT IF(IS_GOOD(fast_inp, avg_inp, slow_inp), origin, NULL)), - COUNT(DISTINCT IF(IS_NON_ZERO(fast_inp, avg_inp, slow_inp), origin, NULL)) - ) AS pct_good_inp, - - # Origins with good CLS divided by origins with any CLS. - SAFE_DIVIDE( - COUNT(DISTINCT IF(IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL)), - COUNT(DISTINCT IF(IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL)) - ) AS pct_good_cls, - - # Origins with good LCP, inp, and CLS divided by origins with any LCP, inp, and CLS. - SAFE_DIVIDE( - COUNT(DISTINCT IF( - IS_GOOD(fast_lcp, avg_lcp, slow_lcp) AND - IS_GOOD(fast_inp, avg_inp, slow_inp) AND - IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL - )), - COUNT(DISTINCT IF( - IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp) AND - IS_NON_ZERO(fast_inp, avg_inp, slow_inp) AND - IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL - )) - ) AS pct_good_cwv -FROM - `chrome-ux-report.materialized.device_summary` -JOIN ( - SELECT - _TABLE_SUFFIX AS client, - url, - app AS ecomm - FROM - `httparchive.technologies.2025_06_01_*` - WHERE - category = 'Ecommerce' AND - ( - app != 'Cart Functionality' AND - app != 'Google Analytics Enhanced eCommerce' - ) -) -ON - CONCAT(origin, '/') = url AND - IF(device = 'desktop', 'desktop', 'mobile') = client -WHERE - date = '2025-06-01' -GROUP BY - client, - ecomm -ORDER BY - origins DESC +#standardSQL +# CrUX Core Web Vitals performance of Ecommerce vendors by device (fid was upated to inp, and is non optinal now) +CREATE TEMP FUNCTION IS_GOOD(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( + good / (good + needs_improvement + poor) >= 0.75 +); + +CREATE TEMP FUNCTION IS_NON_ZERO(good FLOAT64, needs_improvement FLOAT64, poor FLOAT64) RETURNS BOOL AS ( + good + needs_improvement + poor > 0 +); + + +SELECT + client, + ecomm, + COUNT(DISTINCT origin) AS origins, + # Origins with good LCP divided by origins with any LCP. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(fast_lcp, avg_lcp, slow_lcp), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp), origin, NULL)) + ) AS pct_good_lcp, + + # Origins with good INP divided by origins with any inp. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(fast_inp, avg_inp, slow_inp), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(fast_inp, avg_inp, slow_inp), origin, NULL)) + ) AS pct_good_inp, + + # Origins with good CLS divided by origins with any CLS. + SAFE_DIVIDE( + COUNT(DISTINCT IF(IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL)), + COUNT(DISTINCT IF(IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL)) + ) AS pct_good_cls, + + # Origins with good LCP, inp, and CLS divided by origins with any LCP, inp, and CLS. + SAFE_DIVIDE( + COUNT(DISTINCT IF( + IS_GOOD(fast_lcp, avg_lcp, slow_lcp) AND + IS_GOOD(fast_inp, avg_inp, slow_inp) AND + IS_GOOD(small_cls, medium_cls, large_cls), origin, NULL + )), + COUNT(DISTINCT IF( + IS_NON_ZERO(fast_lcp, avg_lcp, slow_lcp) AND + IS_NON_ZERO(fast_inp, avg_inp, slow_inp) AND + IS_NON_ZERO(small_cls, medium_cls, large_cls), origin, NULL + )) + ) AS pct_good_cwv +FROM + `chrome-ux-report.materialized.device_summary` +JOIN ( + SELECT + _TABLE_SUFFIX AS client, + url, + app AS ecomm + FROM + `httparchive.technologies.2025_06_01_*` + WHERE + category = 'Ecommerce' AND + ( + app != 'Cart Functionality' AND + app != 'Google Analytics Enhanced eCommerce' + ) +) +ON + CONCAT(origin, '/') = url AND + IF(device = 'desktop', 'desktop', 'mobile') = client +WHERE + date = '2025-07-01' +GROUP BY + client, + ecomm +ORDER BY + origins DESC diff --git a/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql b/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql index 9117674ba0f..a660ff80c59 100644 --- a/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql +++ b/sql/2025/ecommerce/median_lighthouse_score_ecommsites.sql @@ -1,43 +1,43 @@ -WITH technologies AS ( - SELECT - client, - page, - category, - technology, - rank, - lighthouse, - COUNT(DISTINCT page) OVER (PARTITION BY client) AS total_websites - FROM `httparchive.all.pages`, - UNNEST(technologies) AS tech, - UNNEST(categories) AS category - WHERE - date = '2025-06-01' AND - is_root_page = TRUE -) - -SELECT - client, - rank, - technology, - ARRAY_AGG(DISTINCT category) AS categories, - APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.performance.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_performance, - APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.accessibility.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_accessibility, - APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.seo.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_seo, - APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.best-practices.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_best_practices, - ANY_VALUE(total_websites) AS total_websites, - COUNT(DISTINCT page) AS number_of_websites, - COUNT(DISTINCT page) / ANY_VALUE(total_websites) AS percent_of_websites -FROM technologies -WHERE - category = 'Ecommerce' AND - ( - technology != 'Cart Functionality' AND - technology != 'Google Analytics Enhanced eCommerce' - ) -GROUP BY - client, - rank, - technology -ORDER BY - client, - number_of_websites DESC +WITH technologies AS ( + SELECT + client, + page, + category, + technology, + rank, + lighthouse, + COUNT(DISTINCT page) OVER (PARTITION BY client) AS total_websites + FROM `httparchive.all.pages`, + UNNEST(technologies) AS tech, + UNNEST(categories) AS category + WHERE + date = '2025-07-01' AND + is_root_page = TRUE +) + +SELECT + client, + rank, + technology, + ARRAY_AGG(DISTINCT category) AS categories, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.performance.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_performance, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.accessibility.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_accessibility, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.seo.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_seo, + APPROX_QUANTILES(CAST(JSON_EXTRACT_SCALAR(lighthouse, '$.categories.best-practices.score') AS NUMERIC), 1000)[OFFSET(500)] AS median_best_practices, + ANY_VALUE(total_websites) AS total_websites, + COUNT(DISTINCT page) AS number_of_websites, + COUNT(DISTINCT page) / ANY_VALUE(total_websites) AS percent_of_websites +FROM technologies +WHERE + category = 'Ecommerce' AND + ( + technology != 'Cart Functionality' AND + technology != 'Google Analytics Enhanced eCommerce' + ) +GROUP BY + client, + rank, + technology +ORDER BY + client, + number_of_websites DESC diff --git a/sql/2025/ecommerce/top_ecommerce.sql b/sql/2025/ecommerce/top_ecommerce.sql index 95c330c98b3..35ae50b63e9 100644 --- a/sql/2025/ecommerce/top_ecommerce.sql +++ b/sql/2025/ecommerce/top_ecommerce.sql @@ -1,175 +1,175 @@ -#standardSQL -# Top Ecommerce platforms, compared to 2021 -# top_ecommerce.sql -SELECT - client, - 2025 AS year, - technologies.technology AS ecommerce, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2025-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Ecommerce' AND - date = '2025-06-01' AND - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -GROUP BY - client, - total, - ecommerce -UNION ALL -SELECT - client, - 2024 AS year, - technologies.technology AS ecommerce, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2024-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Ecommerce' AND - date = '2024-06-01' AND - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -GROUP BY - client, - total, - ecommerce -UNION ALL -SELECT - client, - 2023 AS year, - technologies.technology AS ecommerce, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2023-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Ecommerce' AND - date = '2023-06-01' AND - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -GROUP BY - client, - total, - ecommerce -UNION ALL -SELECT - client, - 2022 AS year, - technologies.technology AS ecommerce, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2022-08-01' AND -- noqa: CV09 - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Ecommerce' AND - date = '2022-08-01' AND -- noqa: CV09 - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -GROUP BY - client, - total, - ecommerce -UNION ALL -SELECT - client, - 2021 AS year, - technologies.technology AS ecommerce, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2021-07-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Ecommerce' AND - date = '2021-07-01' AND - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -GROUP BY - client, - total, - ecommerce -ORDER BY - year DESC, - pct DESC +#standardSQL +# Top Ecommerce platforms, compared to 2021 +# top_ecommerce.sql +SELECT + client, + 2025 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2025-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2025-07-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2024 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2024-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2024-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2023 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2023-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2023-06-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2022 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2022-08-01' AND -- noqa: CV09 + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2022-08-01' AND -- noqa: CV09 + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +UNION ALL +SELECT + client, + 2021 AS year, + technologies.technology AS ecommerce, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2021-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Ecommerce' AND + date = '2021-07-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +GROUP BY + client, + total, + ecommerce +ORDER BY + year DESC, + pct DESC diff --git a/sql/2025/ecommerce/top_payment_provider_by_geo.sql b/sql/2025/ecommerce/top_payment_provider_by_geo.sql index dd3a3145f15..827419a9a30 100644 --- a/sql/2025/ecommerce/top_payment_provider_by_geo.sql +++ b/sql/2025/ecommerce/top_payment_provider_by_geo.sql @@ -1,69 +1,69 @@ -#standardSQL -# payment popularity per geo -# top_payment_provider_by_geo.sql -WITH geo_summary AS ( - SELECT - `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, - IF(device = 'desktop', 'desktop', 'mobile') AS client, - origin, - COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total - FROM - `chrome-ux-report.materialized.country_summary` - WHERE - yyyymm = 202506 - UNION ALL - SELECT - 'ALL' AS geo, - IF(device = 'desktop', 'desktop', 'mobile') AS client, - origin, - COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total - FROM - `chrome-ux-report.materialized.device_summary` - WHERE - yyyymm = 202506 -) - -SELECT - * -FROM ( - SELECT - client, - geo, - payment, - COUNT(0) AS pages, - ANY_VALUE(total) AS total, - COUNT(DISTINCT url) / ANY_VALUE(total) AS pct - FROM ( - SELECT DISTINCT - geo, - client, - CONCAT(origin, '/') AS url, - total - FROM - geo_summary - ) JOIN ( - SELECT DISTINCT - client, - cats, - technologies.technology AS payment, - page AS url - FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats - WHERE - technologies.technology IS NOT NULL AND - cats = 'Payment processors' AND - technologies.technology != '' AND - date = '2025-06-01' AND - is_root_page - ) USING (client, url) - GROUP BY - client, - geo, - payment -) -WHERE - pages > 1000 -ORDER BY - pages DESC +#standardSQL +# payment popularity per geo +# top_payment_provider_by_geo.sql +WITH geo_summary AS ( + SELECT + `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.country_summary` + WHERE + yyyymm = 202506 + UNION ALL + SELECT + 'ALL' AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.device_summary` + WHERE + yyyymm = 202506 +) + +SELECT + * +FROM ( + SELECT + client, + geo, + payment, + COUNT(0) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct + FROM ( + SELECT DISTINCT + geo, + client, + CONCAT(origin, '/') AS url, + total + FROM + geo_summary + ) JOIN ( + SELECT DISTINCT + client, + cats, + technologies.technology AS payment, + page AS url + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + technologies.technology IS NOT NULL AND + cats = 'Payment processors' AND + technologies.technology != '' AND + date = '2025-07-01' AND + is_root_page + ) USING (client, url) + GROUP BY + client, + geo, + payment +) +WHERE + pages > 1000 +ORDER BY + pages DESC diff --git a/sql/2025/ecommerce/top_payment_providers.sql b/sql/2025/ecommerce/top_payment_providers.sql index e29d9fc84c8..a9ad5c0959a 100644 --- a/sql/2025/ecommerce/top_payment_providers.sql +++ b/sql/2025/ecommerce/top_payment_providers.sql @@ -1,170 +1,170 @@ -#standardSQL -# Top payment processors, compared to 2021 -# top_payment_providers.sql -SELECT - client, - 2025 AS year, - technologies.technology AS payment, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2025-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Payment processors' AND - date = '2025-06-01' AND - is_root_page -GROUP BY - client, - total, - payment -UNION ALL -SELECT - client, - 2024 AS year, - technologies.technology AS payment, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2024-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Payment processors' AND - date = '2024-06-01' AND - is_root_page -GROUP BY - client, - total, - payment -UNION ALL -SELECT - client, - 2023 AS year, - technologies.technology AS payment, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2023-06-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Payment processors' AND - date = '2023-06-01' AND - is_root_page -GROUP BY - client, - total, - payment -UNION ALL -SELECT - client, - 2022 AS year, - technologies.technology AS payment, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2022-08-01' AND -- noqa: CV09 - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Payment processors' AND - date = '2022-08-01' AND -- noqa: CV09 - is_root_page -GROUP BY - client, - total, - payment -UNION ALL -SELECT - client, - 2021 AS year, - technologies.technology AS payment, - COUNT(DISTINCT page) AS freq, - total, - COUNT(DISTINCT page) / total AS pct -FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats -JOIN ( - SELECT - client, - COUNT(0) AS total - FROM - `httparchive.all.pages` - WHERE - date = '2021-07-01' AND - is_root_page - GROUP BY - client -) -USING (client) -WHERE - cats = 'Payment processors' AND - date = '2021-07-01' AND - is_root_page -GROUP BY - client, - total, - payment -ORDER BY - year DESC, - pct DESC +#standardSQL +# Top payment processors, compared to 2021 +# top_payment_providers.sql +SELECT + client, + 2025 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2025-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2025-07-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2024 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2024-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2024-06-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2023 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2023-06-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2023-06-01' AND + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2022 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2022-08-01' AND -- noqa: CV09 + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2022-08-01' AND -- noqa: CV09 + is_root_page +GROUP BY + client, + total, + payment +UNION ALL +SELECT + client, + 2021 AS year, + technologies.technology AS payment, + COUNT(DISTINCT page) AS freq, + total, + COUNT(DISTINCT page) / total AS pct +FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats +JOIN ( + SELECT + client, + COUNT(0) AS total + FROM + `httparchive.all.pages` + WHERE + date = '2021-07-01' AND + is_root_page + GROUP BY + client +) +USING (client) +WHERE + cats = 'Payment processors' AND + date = '2021-07-01' AND + is_root_page +GROUP BY + client, + total, + payment +ORDER BY + year DESC, + pct DESC diff --git a/sql/2025/ecommerce/top_shopsystem_by_geo.sql b/sql/2025/ecommerce/top_shopsystem_by_geo.sql index 98ea4d326ef..8d8a062d92b 100644 --- a/sql/2025/ecommerce/top_shopsystem_by_geo.sql +++ b/sql/2025/ecommerce/top_shopsystem_by_geo.sql @@ -1,71 +1,71 @@ -#standardSQL -# Shopsystem popularity per geo -# top_shopsystem_by_geo.sql -WITH geo_summary AS ( - SELECT - `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, - IF(device = 'desktop', 'desktop', 'mobile') AS client, - origin, - COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total - FROM - `chrome-ux-report.materialized.country_summary` - WHERE - yyyymm = 202506 - UNION ALL - SELECT - 'ALL' AS geo, - IF(device = 'desktop', 'desktop', 'mobile') AS client, - origin, - COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total - FROM - `chrome-ux-report.materialized.device_summary` - WHERE - yyyymm = 202506 -) - -SELECT - * -FROM ( - SELECT - client, - geo, - app, - COUNT(0) AS pages, - ANY_VALUE(total) AS total, - COUNT(DISTINCT url) / ANY_VALUE(total) AS pct - FROM ( - SELECT DISTINCT - geo, - client, - CONCAT(origin, '/') AS url, - total - FROM - geo_summary - ) JOIN ( - SELECT DISTINCT - client, - cats, - technologies.technology AS app, - page AS url - FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats - WHERE - technologies.technology IS NOT NULL AND - cats = 'Ecommerce' AND - technologies.technology != 'Cart Functionality' AND - technologies.technology != 'Google Analytics Enhanced eCommerce' AND - technologies.technology != '' AND - date = '2025-06-01' AND - is_root_page - ) USING (client, url) - GROUP BY - client, - geo, - app -) -WHERE - pages > 1000 -ORDER BY - pages DESC +#standardSQL +# Shopsystem popularity per geo +# top_shopsystem_by_geo.sql +WITH geo_summary AS ( + SELECT + `chrome-ux-report`.experimental.GET_COUNTRY(country_code) AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY country_code, IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.country_summary` + WHERE + yyyymm = 202506 + UNION ALL + SELECT + 'ALL' AS geo, + IF(device = 'desktop', 'desktop', 'mobile') AS client, + origin, + COUNT(DISTINCT origin) OVER (PARTITION BY IF(device = 'desktop', 'desktop', 'mobile')) AS total + FROM + `chrome-ux-report.materialized.device_summary` + WHERE + yyyymm = 202506 +) + +SELECT + * +FROM ( + SELECT + client, + geo, + app, + COUNT(0) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct + FROM ( + SELECT DISTINCT + geo, + client, + CONCAT(origin, '/') AS url, + total + FROM + geo_summary + ) JOIN ( + SELECT DISTINCT + client, + cats, + technologies.technology AS app, + page AS url + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + technologies.technology IS NOT NULL AND + cats = 'Ecommerce' AND + technologies.technology != 'Cart Functionality' AND + technologies.technology != 'Google Analytics Enhanced eCommerce' AND + technologies.technology != '' AND + date = '2025-07-01' AND + is_root_page + ) USING (client, url) + GROUP BY + client, + geo, + app +) +WHERE + pages > 1000 +ORDER BY + pages DESC diff --git a/sql/2025/ecommerce/top_vendors_crux_rank.sql b/sql/2025/ecommerce/top_vendors_crux_rank.sql index 1c51e57fc3a..d3e93accd50 100644 --- a/sql/2025/ecommerce/top_vendors_crux_rank.sql +++ b/sql/2025/ecommerce/top_vendors_crux_rank.sql @@ -1,64 +1,64 @@ -#standardSQL -# Ecommerce adoption per rank -# top_ecommerce_by_rank.sql - -SELECT - client, - ecommerce, - rank, - COUNT(DISTINCT url) AS pages, - ANY_VALUE(total) AS total, - COUNT(DISTINCT url) / ANY_VALUE(total) AS pct -FROM ( - SELECT DISTINCT - client, - page AS url, - technologies.technology AS ecommerce - FROM - `httparchive.all.pages`, - UNNEST(technologies) AS technologies, - UNNEST(technologies.categories) AS cats - WHERE - cats = 'Ecommerce' AND - date = '2025-06-01' AND - is_root_page AND - technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') -) -JOIN ( - SELECT - client, - page AS url, - rank_magnitude AS rank - FROM - `httparchive.all.pages`, - UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude - WHERE - rank <= rank_magnitude AND - date = '2025-06-01' AND - is_root_page -) -USING (client, url) -JOIN ( - SELECT - client, - rank_magnitude AS rank, - COUNT(0) AS total - FROM - `httparchive.all.pages`, - UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude - WHERE - rank <= rank_magnitude AND - date = '2025-06-01' AND - is_root_page - GROUP BY - client, - rank_magnitude -) -USING (client, rank) -GROUP BY - client, - ecommerce, - rank -ORDER BY - rank, - pages DESC +#standardSQL +# Ecommerce adoption per rank +# top_ecommerce_by_rank.sql + +SELECT + client, + ecommerce, + rank, + COUNT(DISTINCT url) AS pages, + ANY_VALUE(total) AS total, + COUNT(DISTINCT url) / ANY_VALUE(total) AS pct +FROM ( + SELECT DISTINCT + client, + page AS url, + technologies.technology AS ecommerce + FROM + `httparchive.all.pages`, + UNNEST(technologies) AS technologies, + UNNEST(technologies.categories) AS cats + WHERE + cats = 'Ecommerce' AND + date = '2025-07-01' AND + is_root_page AND + technologies.technology NOT IN ('Cart Functionality', 'Google Analytics Enhanced eCommerce') +) +JOIN ( + SELECT + client, + page AS url, + rank_magnitude AS rank + FROM + `httparchive.all.pages`, + UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude + WHERE + rank <= rank_magnitude AND + date = '2025-07-01' AND + is_root_page +) +USING (client, url) +JOIN ( + SELECT + client, + rank_magnitude AS rank, + COUNT(0) AS total + FROM + `httparchive.all.pages`, + UNNEST([1e3, 1e4, 1e5, 1e6, 1e7]) AS rank_magnitude + WHERE + rank <= rank_magnitude AND + date = '2025-07-01' AND + is_root_page + GROUP BY + client, + rank_magnitude +) +USING (client, rank) +GROUP BY + client, + ecommerce, + rank +ORDER BY + rank, + pages DESC