这个 SQL 应该怎么写?认真

查看 89|回复 4
作者:leixx   
现在的版本是这样的:
名称 | 明细 | 价格
K8s | ACK | 30
现在产品想变成这个样子:
名称 | 明细| 地域 | 价格| 共有条目数
K8s | ACK | 杭州,南京 | 30 | 2
具体的数据大概是这样的:
名称 | 明细 | 地域 | 价格
K8s | ACK | 杭州| 10
K8s | ACK | 南京| 20
最好是能通过 sql 写出来,因为数据量很大。
1. 这里如何能把两个地域用 sql 写出来呢?
2. 条目数怎么计算?
3. 这只是一个产品,如果产品很多怎么办? 如何能把下面的数据,统计出来呢?
期望结果是这样的比如:
名称 | 明细 | 地域 | 价格 |共有条目数
K8s | ACK | 杭州,南京 | 30 | 2
服务器 | ECS | 杭州,上海,南京 | 30 | 5
真实数据是这样的:
名称 | 明细 | 地域| 价格
K8s | ACK | 杭州 | 10
K8s | ACK |南京 | 20
服务器 | ECS |上海 | 3.33
服务器 | ECS |上海 | 3.33
服务器 | ECS |上海 | 3.34
服务器 | ECS |杭州 | 10
服务器 | ECS |南京 | 10

k8s, ack, ecs, 明细

leixx
OP
  
现在的版本是这样的:
名称 | 明细 | 价格
K8s | ACK | 30
现在产品想变成这个样子:
名称 | 明细| 地域 | 价格| 共有条目数
K8s | ACK | 杭州,南京 | 30 | 2
具体的数据大概是这样的:
名称 | 明细 | 地域 | 价格
K8s | ACK | 杭州| 10
K8s | ACK | 南京| 20
一开始的想法就比原来多了一个地域,那就 group by 下地域,然后在到内存里面计算就好了,这样其实数据量很大,而且不能支持排序,比如是按照价格或者多个字段排序,会需要拿到最后的结果集中在排序一次。
findlisa   
SELECT
名称,
明细,
GROUP_CONCAT(地域) AS 地域,
价格,
COUNT(*) AS 共有条目数
FROM
your_table_name -- 将表名替换为你实际的表名
GROUP BY
名称,
明细,
价格;
合并数据后,价格取值逻辑是怎么样的?
mineralsalt   
视图是不是可以
zbinlin   
mysql 还是 postgresql 版本?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部