SQL - 我需要显示 2012 年销售的商品名称、商品价格和数量

Posted

技术标签:

【中文标题】SQL - 我需要显示 2012 年销售的商品名称、商品价格和数量【英文标题】:SQL - I need to display the item name, item price, and number sold in year 2012 【发布时间】:2019-11-15 02:33:23 【问题描述】:

我需要显示 2012 年的商品名称、商品价格和销售数量。我有这个:

SELECT m.item_name, m.price, COUNT(od.qty) as qty, DATE_FORMAT(om.odate, '%Y') as date
FROM menu as m, order_detail as od, order_main as om
WHERE m.id = od.orderid AND DATE_FORMAT(om.odate, '%Y') = '2012'
GROUP BY m.item_name
ORDER BY qty ASC
LIMIT 7;

这给了我这个:

enter image description here

我需要让它看起来像这样:

enter image description here

我该怎么办?

【问题讨论】:

【参考方案1】:

你正在寻找sum()而不是count()

SELECT m.item_name
        , SUM(m.price) as price
        , SUM(od.qty) as qty
        , DATE_FORMAT(om.odate, '%Y') as date 
FROM menu as m
INNER JOIN order_detail od ON od.orderid = m.id 
WHERE DATE_FORMAT(om.odate, '%Y') = '2012'      
GROUP BY m.item_name, DATE_FORMAT(om.odate, '%Y') 
ORDER BY od.qty ASC
LIMIT 7;

【讨论】:

【参考方案2】:

请检查一下,这将有助于美化您的 sql 表输出:) Prettifying the select statement output

如果您不希望在输出中显示 DATE_FORMAT(om.odate, '%Y') 作为日期,请从您的选择查询中删除它。

我相信您的查询必须是:

SELECT m.item_name, m.price, COUNT(od.qty) as qty FROM menu as m, order_detail 作为 od,order_main 作为 om WHERE m.id = od.orderid AND DATE_FORMAT(om.odate, '%Y') = '2012' GROUP BY m.item_name ORDER BY qty ASC 限制 7;

【讨论】:

这种加入方式在 1992 年左右被有效弃用。无论如何,在 SO 上通常不鼓励这样做。

以上是关于SQL - 我需要显示 2012 年销售的商品名称、商品价格和数量的主要内容,如果未能解决你的问题,请参考以下文章

关于SQL多类别汇总取最大值的实现

SQL查询问题

用C语言来编写:商品销售统计程序

用select语句将两个表合成为一个表

c语言 商品管理系统

SQL 计算发票表中商品的销售次数