Mysql SQL在计算相关列时按组进行分组
我无法将以下查询分组在一起:Mysql SQL在计算相关列时按组进行分组,mysql,sql,Mysql,Sql,我无法将以下查询分组在一起: SELECT id , decile_clean , COUNT(DISTINCT source) AS unique_sources FROM uld_data_combined_rasterized GROUP BY id , decile_clean HAVING COUNT(DISTINCT source) = 3 我想要的输出是: +------------+--------------+ | decile_
SELECT id
, decile_clean
, COUNT(DISTINCT source) AS unique_sources
FROM uld_data_combined_rasterized
GROUP
BY id
, decile_clean
HAVING COUNT(DISTINCT source) = 3
我想要的输出是:
+------------+--------------+
| decile_clean | count |
+------------+--------------+
| Decile4to8 | 9 |
| Decile9to10 | 1 |
| Decile1to3 | 1 |
在过去的两个小时里,我试图将一堆不同的查询混合在一起,但似乎无法得到它
我原来的桌子是这样的:
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id | varchar(255) | YES | | NULL | |
| date | date | YES | | NULL | |
| source | varchar(11) | NO | | | |
| decile_clean | varchar(11) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
这似乎是两个级别的聚合:
SELECT decile_clean, COUNT(*)
FROM (SELECT id, decile_clean, COUNT(DISTINCT source) AS unique_sources
FROM uld_data_combined_rasterized
GROUP BY id,decile_clean
HAVING COUNT(DISTINCT source) = 3
) d
GROUP BY decile_clean
这似乎是两个级别的聚合:
SELECT decile_clean, COUNT(*)
FROM (SELECT id, decile_clean, COUNT(DISTINCT source) AS unique_sources
FROM uld_data_combined_rasterized
GROUP BY id,decile_clean
HAVING COUNT(DISTINCT source) = 3
) d
GROUP BY decile_clean
对于MySql 8.0+,您可以使用
COUNT()
window函数:
SELECT DISTINCT
decile_clean,
COUNT(*) OVER (PARTITION BY decile_clean) AS count
FROM uld_data_combined_rasterized
GROUP BY id, decile_clean
HAVING COUNT(DISTINCT source) = 3
对于MySql 8.0+,您可以使用
COUNT()
window函数:
SELECT DISTINCT
decile_clean,
COUNT(*) OVER (PARTITION BY decile_clean) AS count
FROM uld_data_combined_rasterized
GROUP BY id, decile_clean
HAVING COUNT(DISTINCT source) = 3
你就是那个人!我有点想我必须做一个from查询…但是不能把它拼凑起来。非常感谢你。我会在9分钟内接受答案,当它允许我!在选择列表中不需要计数,只需要在
中有
。或者更改为拥有唯一的资源=3
,以避免冗余。你就是那个人!我有点想我必须做一个from查询…但是不能把它拼凑起来。非常感谢你。我会在9分钟内接受答案,当它允许我!在选择列表中不需要计数,只需要在中有
。或者更改为拥有唯一的_sources=3
,以避免冗余。很高兴知道,不幸的是,由于一些兼容性问题(GCP还不支持8),我忘了提到我在5.6上运行此功能。很高兴知道,不幸的是,由于一些兼容性问题,我忘了提到我在5.6上运行此功能(GCP还不支持8).