MySQL 一行数据中的最高/最低 5

发布于 2024-10-07 16:36:01 字数 344 浏览 0 评论 0原文

我有以下查询:

SELECT AVG(q1) AS q1, AVG (q2) AS q2, AVG(q3) AS q3, AVG(q4) AS q4, AVG(q5) AS q5 FROM tresults_acme

q1    q2    q3    q4    q5
8.23  5.23  7.65  8.00  7.99

此查询返回一行数据,标题为 q1、q2、q3、q4、q5 - 在 MySQL 中是否有可能只显示最高的两个(q1 和 q4)或最低的两个(q2 和 q5) ; q3) - 如果不在 MySQL 中可以通过 PHP 完成吗?

预先感谢,

荷马。

I have the following query:

SELECT AVG(q1) AS q1, AVG (q2) AS q2, AVG(q3) AS q3, AVG(q4) AS q4, AVG(q5) AS q5 FROM tresults_acme

q1    q2    q3    q4    q5
8.23  5.23  7.65  8.00  7.99

This query brings back a single row of data, headed q1, q2, q3, q4, q5 - is it possible in MySQL to just show the Highest two (q1 & q4) or Lowest two (q2 & q3) - if not in MySQL can it be done via PHP?

Thanks in advance,

Homer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

落叶缤纷 2024-10-14 16:36:01

您可以使用过程,但这是一种纯 SQL 方法:使用

    select greatest(q1,q2,q3,q4,q5) as highest_1,
           least( greatest(q1,q2,q3,q4),
                  greatest(q1,q2,q3,q5),
                  greatest(q1,q2,q4,q5),
                  greatest(q1,q3,q4,q5),
                  greatest(q2,q3,q4,q5) ) as highest_2
    from ( SELECT AVG(q1) AS q1, 
                  AVG(q2) AS q2, 
                  AVG(q3) AS q3, 
                  AVG(q4) AS q4, 
                  AVG(q5) AS q5 
           FROM tresults_acme ) t;

以下方法进行测试:

create view tresults_acme as select 1 as q1, 2 as q2, 3 as q3, 4 as q4, 5 as q5;

结果:

         highest_1      |     highest_2
    --------------------+--------------------
     5.0000000000000000 | 4.0000000000000000

You could use a procedure, but here is a pure SQL way of doing it:

    select greatest(q1,q2,q3,q4,q5) as highest_1,
           least( greatest(q1,q2,q3,q4),
                  greatest(q1,q2,q3,q5),
                  greatest(q1,q2,q4,q5),
                  greatest(q1,q3,q4,q5),
                  greatest(q2,q3,q4,q5) ) as highest_2
    from ( SELECT AVG(q1) AS q1, 
                  AVG(q2) AS q2, 
                  AVG(q3) AS q3, 
                  AVG(q4) AS q4, 
                  AVG(q5) AS q5 
           FROM tresults_acme ) t;

tested with:

create view tresults_acme as select 1 as q1, 2 as q2, 3 as q3, 4 as q4, 5 as q5;

result:

         highest_1      |     highest_2
    --------------------+--------------------
     5.0000000000000000 | 4.0000000000000000
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文