Mysql 在SQL中使用GROUPBY列1、2、3、…、n有语法上的好处吗?

Mysql 在SQL中使用GROUPBY列1、2、3、…、n有语法上的好处吗?,mysql,sql,google-bigquery,Mysql,Sql,Google Bigquery,我知道这不是一种“好的做事方式”,但我们在许多SQL查询中使用以下符号: 选择尺寸1、尺寸2、…、尺寸n、聚集函数(度量值1)、…聚集函数(度量值k) 从桌子上 按1,2,…,n分组 我想知道是否有更简洁的方法来编写它,例如,按1-n分组(按列1到列n分组)假设您的表有十几列或更多列 考虑以下BigQuery模板(注意下面的offset是基于零的),应该非常适合您提到的POC类型的工作 select ( select string_agg(kv) from unnest(spl

我知道这不是一种“好的做事方式”,但我们在许多SQL查询中使用以下符号:

选择尺寸1、尺寸2、…、尺寸n、聚集函数(度量值1)、…聚集函数(度量值k)
从桌子上
按1,2,…,n分组

我想知道是否有更简洁的方法来编写它,例如,
按1-n分组(按列1到列n分组)

假设您的表有十几列或更多列

考虑以下BigQuery模板(注意下面的
offset
是基于零的),应该非常适合您提到的POC类型的工作

select (
    select string_agg(kv)
    from unnest(split(trim(to_json_string(t), '{}'))) kv with offset 
    where offset between 0 and N-1
  ) dims,
  agg_function(metric_1),...agg_function(metric_k)
from `project.dataset.table` t
group by 1      
下面是虚拟/简单化的示例

with `project.dataset.table` as (
  select 1 col1, '2' col2, 3 col3, 4 col4 union all 
  select 11, '2', 3, 41
)
select 
  (
    select string_agg(kv)
    from unnest(split(trim(to_json_string(t), '{}'))) kv with offset 
    where offset in (1,2)
  ) dims,
  sum(col1) metric1, count(col1) metric2
from `project.dataset.table` t
group by 1 
有输出


仅使用您正在使用的数据库标记您的问题。无论如何,答案基本上是“不”,不管怎样。我两者都用databases@Strawberry,当在ELT环境中进行POC和测试大型查询时,这些内容非常有用。特别是当它涉及到多次重写某些块时,那么以这种“节略”的方式执行它是非常有帮助的。当然,一旦查询得到验证,我们就会将“丑陋”的数字转换为它们各自的列名。但是,嘿,让我们假装语法糖不是软件开发的一个重要组成部分。事实上,我相信这将是一个很好的功能。如果我们以键、值的格式聚合维度,您如何过滤维度?感谢您的时间@MikhailBerlyant,但尽管这是一种将所有维度组合在一起的聪明方法,但与我要求的不同。我感谢你的努力。你要求的是
。。。任何语法糖…
-我给了你选择!显然,它不只是
groupby1-N
,因为它并不存在,而我的答案中的解决方法允许您避免使用英里长的
选择dim_1、dim_2、…、dim_N、
和更短但仍然很长的
groupby1,2、…,N
!所以我想我的答案正好回答了你的问题:o)