【问题标题】:Multiple Select Statement in MYSQL QueryMYSQL 查询中的多选语句
【发布时间】:2018-06-19 05:39:03
【问题描述】:

我有一个 mysql 表,其中包含在不同市场上按日期销售的产品。

Date   Marketplace   Sale 
1      flipkart       1000
1      flipkart       500
1      amazon          200
1      amazon         1500
1      amazon          700
2      myntra          500
2      flipkart       1000

我想要一个 mysql 语句,它可以让我在一个月内按日期销售不同市场(亚马逊、flipkart 等)的总销售额,就像在这种情况下一样 上

flipkart 月 1 日总销售额为 1500 (1000+500),亚马逊总销售额 2400 (1500+700+200)

我有这个问题:

SELECT  date, (Select sum(gross_sale) from sku where marketplace='flipkart') as flipkart, (Select sum(gross_sale) from sku where marketplace='Myntra') as myntra, sum(gross_sale) as countdate FROM sku WHERE   date >= '2017-11-01' AND
        date   <= '2017-11-30' GROUP BY date ORDER BY date ASC limit 30 ;

但 select 子查询并没有给我 date wise distribution ,而是 month 的总销售额。如何解决这个问题。请帮忙。提前致谢。

【问题讨论】:

  • 我们感谢样本数据和所需的输出。
  • select Date, Marketplace, sum(Sale) from yourtable group by Date, Marketplace
  • 你试过Sum吗?谷歌的第二个结果。在你在这里提问之前,你真的应该做更多的研究。
  • 亚马逊总销售额 2700 (1500+700+500) ??根据您的示例数据,它应该是亚马逊总销售额 2400 (200+1500+700)
  • 用 sqlfiddle 的链接检查底部的答案

标签: php mysql sql phpmyadmin


【解决方案1】:

Mysql 为您提供sum() 并按功能分组。您可以通过以下查询检索所需的结果

select Date, Marketplace, sum(Sale) from table group by Date, Marketplace

sum() 将在group by 的帮助下汇总同一市场的所有价格

在您发表评论后

如果您不想使用循环并且需要单个结果和查询,那么您只需要where 子句

select Date, Marketplace, sum(Sale) from table where Marketplace = 'flipkart'

【讨论】:

  • 感谢您的帮助,但我希望 sum(sale) 作为不同市场的不同变量,例如“按日期从表组中选择日期、sum(flipkart_sale)、sum (amazon_sale)”
  • @NishankMagoo 请立即查看
  • @Mr.Developer 但这仅适用于一个市场。我想在一个月内对所有市场进行一次查询。选择日期,总和(flipkart 的总销售额)作为flipkart,总和(亚马逊的总销售额),总和(myntra 的总销售额)从 sku WHERE 日期 >= '2017-11-01' AND date
  • 如果我想要多个市场,我必须在这里使用联合吗?
【解决方案2】:

试试这个

SELECT 
    sk.date,
    sum(sk1.sale) as flipkart_sum_sale,
    sum(sk2.sale) as amanzon_sum_sale
FROM
    sku sk
        LEFT JOIN
    sku sk1 ON sk.id = sk1.id
        AND sk1.marketplace = 'flipkart'
        LEFT JOIN
    sku sk2 ON sk.id = sk2.id
        AND sk2.marketplace = 'amazon'
GROUP BY sk.date;

【讨论】:

  • 谢谢。成功了!
  • 您能否告诉我如何在此处指定日期使用 where 子句。
  • 请立即尝试:SELECT sk.date, sum(sk1.sale) as flipkart_sum_sale, sum(sk2.sale) as amanzon_sum_sale FROM sku sk LEFT JOIN sku sk1 ON sk.id = sk1.id AND sk1.marketplace = 'flipkart' LEFT JOIN sku sk2 ON sk.id = sk2.id AND sk2.marketplace = 'amazon' WHERE (sk1.date >= '2017-11-01' AND sk1.date = '2017-11-01' AND sk2.date
【解决方案3】:

你有没有尝试过联合:

select date,marketplace,sum(sales) from yourtable where marketplace='flipkart'

union

select date,marketplace,sum(sales) from yourtable where marketplace='amazon'

这是sqlfiddle

【讨论】:

    【解决方案4】:

    试试这个:

    SELECT Date,Marketplace, SUM(Sale) 
    FROM tab111 where date =1
    Group By Marketplace 
    

    【讨论】:

      【解决方案5】:
      select Date,Marketplace, sum(Sale) from table group by Marketplace;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-14
        • 2020-07-21
        • 2016-01-04
        • 2020-02-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多