首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计数枚举类型列的唯一行,以在mysql中再输出两列

计数枚举类型列的唯一行,以在mysql中再输出两列
EN

Stack Overflow用户
提问于 2011-11-14 15:55:22
回答 2查看 2.8K关注 0票数 4

我有以下mysql表:

代码语言:javascript
复制
Item Name   Listing Fee Listing Type
watch       $0.20       LISTED
watch       $0.20       LISTED
watch       $0.30       SOLD
glasses     $0.50       LISTED
glasses     $0.50       LISTED
glasses     $0.50       LISTED
glasses     $1.00       SOLD

我需要的是一个Group by SQL的输出:

代码语言:javascript
复制
Item Name   Total Fee   Total Listed    Total Sold
watch       $0.70       2       1
glasses     $2.50       3       1

规则是每个“项目名称”将具有多个列表记录,其中定义了费用和列表类型。可能有两种“上市类型”上市和售出。

我想在表上运行一个查询并生成摘要,如前面提到的输出。

谢谢维基

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-14 16:21:15

代码语言:javascript
复制
SELECT
    `Item Name`, 
    SUM(`Listing Fee`) AS `Total Fee`,
    SUM(CASE `Listing Type` WHEN 'LISTED' THEN 1 ELSE 0 END) AS `Total Listed`,
    SUM(CASE `Listing Type` WHEN 'SOLD' THEN 1 ELSE 0 END) AS `Total Sold`
FROM `Table Name`
GROUP BY `Item Name`

这将使用静态的"Listing Types“汇总列表。如果需要动态列表,则必须在存储过程中构建SQL并执行它。

输出:

代码语言:javascript
复制
Item Name   Total Fee   Total Listed   Total Sold
watch       $0.70       2              1
glasses     $2.50       3              1

您可以更进一步:

代码语言:javascript
复制
SELECT
    `Item Name`,
    SUM(
        CASE `Listing Type`
            WHEN 'LISTED' THEN `Listing Fee`
            ELSE 0
        END
    ) AS `Total Fee Listing`,
    SUM(
        CASE `Listing Type`
            WHEN 'SOLD' THEN `Listing Fee`
            ELSE 0
        END
    ) AS `Total Fee Sold`
FROM `Table Name`
GROUP BY `Item Name`

输出:

代码语言:javascript
复制
Item Name   Total Fee Listing   Total Fee Sold
watch       $0.40               $0.30
glasses     $1.50               $1.00
票数 2
EN

Stack Overflow用户

发布于 2011-11-14 16:20:44

首先-你应该按项目对这些记录进行分组,然后你可以使用一个小技巧来计算总数-

代码语言:javascript
复制
SELECT
  `Item Name`,
  SUM(`Listing Fee`) `Total Fee`,
  COUNT(IF(`Listing Type` = 'LISTED', 1, NULL)) `Total Listed`,
  COUNT(IF(`Listing Type` = 'SOLD', 1, NULL)) `Total Sold`
FROM
  mytable
GROUP BY
  `Item Name`;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8118715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档