mysql 分组查询 横向
时间: 2023-10-12 11:03:52 浏览: 174
要在 MySQL 中进行分组查询并按横向显示结果,您可以使用 CASE 表达式和条件聚合函数。以下是一个示例查询,演示如何实现横向分组查询:
```sql
SELECT
category,
SUM(CASE WHEN year = 2021 THEN sales END) AS sales_2021,
SUM(CASE WHEN year = 2022 THEN sales END) AS sales_2022
FROM
your_table
GROUP BY
category;
```
在上述查询中,您需要将 `your_table` 替换为实际的表名,并根据您的数据结构做相应的调整。查询将按 `category` 列进行分组,并使用条件聚合函数 `SUM` 和 CASE 表达式来计算每个类别在 2021 年和 2022 年的销售总额。结果将包含 `category`、`sales_2021` 和 `sales_2022` 列。
请根据您的实际需求调整查询,并确保表名、列名和条件与您的数据库相匹配。希望对您有所帮助!
相关问题
Mysql 查询结果横向显示
A:
可以使用联合查询和CASE语句将查询结果横向显示。例如,假设有一个orders表,包含以下字段:order_date、product_name、product_price、customer_name、customer_email。如果想要将每个订单的详细信息按照日期横向显示,可以执行以下SQL查询:
```
SELECT order_date,
MAX(CASE WHEN product_name = 'A' THEN CONCAT(product_name, ': ', product_price) ELSE NULL END) AS 'A',
MAX(CASE WHEN product_name = 'B' THEN CONCAT(product_name, ': ', product_price) ELSE NULL END) AS 'B',
MAX(CASE WHEN product_name = 'C' THEN CONCAT(product_name, ': ', product_price) ELSE NULL END) AS 'C',
MAX(CASE WHEN product_name = 'D' THEN CONCAT(product_name, ': ', product_price) ELSE NULL END) AS 'D',
customer_name,
customer_email
FROM orders
GROUP BY order_date, customer_name, customer_email
ORDER BY order_date;
```
上述查询中的MAX和CASE语句将每个订单中的产品名称和价格组合成一个字符串,并将其显示在A、B、C、D四个列中。'A'、'B'、'C'、'D'是这四个列的别名,可以根据实际需要随意更改。最后通过GROUP BY子句将结果按照日期、客户姓名和客户电子邮件分组,并按照日期进行排序。
mysql 字段重量第一计费区间价格到重量第十计费区间价格从高到低横向排序
要实现 MySQL 数据库中的字段重量第一计费区间价格到重量第十计费区间价格从高到低的横向排序,可以使用 PIVOT 操作。假设你有一个名为 `table1` 的表格,包含了多个字段,包括 `weight`、`price1`、`price2`、`price3` 等。可以使用以下 SQL 语句来实现:
```
SELECT weight,
MAX(CASE WHEN seq = 1 THEN price ELSE NULL END) AS price1,
MAX(CASE WHEN seq = 2 THEN price ELSE NULL END) AS price2,
MAX(CASE WHEN seq = 3 THEN price ELSE NULL END) AS price3,
...
FROM (
SELECT weight, price, seq
FROM table1
UNPIVOT (
price FOR seq IN (price1, price2, price3, ...)
) AS unpvt
) AS t
GROUP BY weight
ORDER BY price1 DESC, price2 DESC, price3 DESC, ...;
```
在上面的 SQL 语句中,使用 `UNPIVOT` 操作将列数据转换为行数据,并使用 `CASE` 语句将行数据转换为列数据。`GROUP BY` 子句用于将数据按照 `weight` 进行分组。`ORDER BY` 子句用于将数据按照 `price1`、`price2`、`price3` 等字段从高到低排序。
阅读全文