首页 > 解决方案 > 如何从分组MYSQL中查询出随机公司名称

问题描述

我想从分组中获取特定的公司名称。表数据如下所示。我希望能够根据我的喜好选择其中一个 company_name 显示在输出中。例如,我想在 Rig A 的输出中显示 Halliburton、Hycalog 或 Drill,这可能吗?

钻机序列 company_name total_time  
------ -------- ------------ ------------
钻机 A 1 Hycalog 20
钻机 A 2 哈里伯顿 20
钻机 A 3 钻头 20
钻机 B 4 康菲 30
钻机 B 5 总计 30

我已经尝试过子查询和案例,所有这些都没有返回我想要的结果。我想要的只是选择在原始数据中随机公司的输出中显示哪个公司,例如在这种情况下,我想为钻机 A 显示 company_name Drill 并为钻机 B 显示 company_name Total ...

当然,如果可能的话,我可以自由选择我想在输出中显示的公司名称。

SELECT rig, sequence, company_name, SUM(total_time) FROM table A GROUP BY rig;
钻机序列 company_name total_time  
------ -------- ------------ ------------
钻机 A 3 钻头 60
钻机 B 5 总计 60

标签: mysql

解决方案


如果您使用的是 MySQL 8+,那么这是一个使用选项ROW_NUMBER

SELECT rig, sequence, company_name, total_time_sum
FROM
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY rig ORDER BY RAND()) rn,
        SUM(total_time) OVER (PARTITION BY rig) total_time_sum
    FROM tableA
) t
WHERE rn = 1;

在此处输入图像描述

演示

这将从每个装备组中选择一个随机行并显示它。


推荐阅读