gpt4 book ai didi

php - 具有多个 GROUP BY 的 MySQL 查询 - 如何在 HTML 表中将一组设为列标题,一组设为行标题?

转载 作者:行者123 更新时间:2023-11-29 06:44:39 25 4
gpt4 key购买 nike

这个标题可能没有意义,我不确定如何用一句话来问我想做什么...

我有一个像这样的 MySQL 表:

| id | user  | team   | month | result |
|----|-------|--------|-------|--------|
| 1 | Joe | red | sept | 100 |
| 2 | Joe | red | oct | 40 |
| 3 | Jim | red | sept | 70 |
| 4 | Jim | red | oct | 50 |
| 5 | Susy | red | sept | 40 |
| 6 | Tim | blue | sept | 60 |
| 7 | Tim | blue | oct | 100 |
| 8 | Betty | blue | sept | 70 |
| 9 | Dave | blue | sept | 20 |
| 10 | Stan | green | oct | 40 |
| 11 | Alan | green | sept | 80 |
| 12 | Tina | green | oct | 100 |
| 13 | Tina | green | sept | 30 |
| 14 | Rick | yellow | oct | 50 |
| 15 | Ellen | yellow | oct | 60 |

最终,我试图输出一个 HTML 表格,该表格显示按团队和月份组织的结果大于 50 的用户总数。

这是我现在正在运行的查询:

SELECT team, month, count(*)
FROM example
WHERE result >= 50
GROUP BY team, month

返回这个:

| team   | month | count(*) |
|--------|-------|----------|
| blue | oct | 1 |
| blue | sept | 2 |
| green | oct | 1 |
| green | sept | 1 |
| red | oct | 1 |
| red | sept | 2 |
| yellow | oct | 2 |

但在我的 HTML 表格中,我想将月份列为列(并添加总计列)。所以呈现如下的 HTML 表格(忽略排序,它是任意的):

| Team   | sept | oct | Total |
|--------|------|-----|-------|
| red | 2 | 1 | 3 |
| blue | 2 | 1 | 3 |
| green | 1 | 1 | 2 |
| yellow | 0 | 2 | 2 |

我可以使用我的查询结果并以某种方式将其处理成 PHP/HTML 中的最终格式吗?还是我首先需要更改查询方式?

*编辑以更改 HTML 表格输出示例 - 我希望这是动态的,以便随着更多月份添加到原始表格,生成的 HTML 表格可以水平扩展。

最佳答案

您需要的基本 SQL 是:

SELECT  Team,
COUNT(CASE WHEN Month = 'Sept' THEN 1 END) AS Sept,
COUNT(CASE WHEN Month = 'Oct' THEN 1 END) AS oct,
COUNT(*) AS Total
FROM T
GROUP BY Team;

Example on SQL Fiddle

如果您不知道所需的列数,则需要使用准备好的语句动态地完成'

SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT
CONCAT(
'COUNT(CASE WHEN Month = ''',
Month,
''' THEN 1 END) AS ',
Month
)
)
INTO @sql
FROM T;

SET @sql = CONCAT('SELECT Team, ', @sql, ', COUNT(*) AS Total FROM T GROUP BY Team');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Example on SQL Fiddle

关于php - 具有多个 GROUP BY 的 MySQL 查询 - 如何在 HTML 表中将一组设为列标题,一组设为行标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com