Mysql 使用组函数排除少数字段-链接多个表而不将其数据与另一个表混合-对动态表执行查询
我几乎没有CRM应用程序的表,我正在编写sql查询,以便在仪表板上显示所有数据的摘要 假设有3个表,一个是订单,有不同的客户类型,如本地、州际、国际。 二是ecom订单,三是费用(包括工资、资产购买等) (注意:这只是一个示例。实际数据和实际表非常大,并且有很多连接..) 在所有三个表中都有一个字段total_amount 我试图展示:Mysql 使用组函数排除少数字段-链接多个表而不将其数据与另一个表混合-对动态表执行查询,mysql,codeigniter-3,Mysql,Codeigniter 3,我几乎没有CRM应用程序的表,我正在编写sql查询,以便在仪表板上显示所有数据的摘要 假设有3个表,一个是订单,有不同的客户类型,如本地、州际、国际。 二是ecom订单,三是费用(包括工资、资产购买等) (注意:这只是一个示例。实际数据和实际表非常大,并且有很多连接..) 在所有三个表中都有一个字段total_amount 我试图展示: SUM(表1.总金额)及其计数 总金额(表1.总金额),客户类型为本地、州际、国际。和它的计数 年度金额(表1.总金额)及其计数 每月金额(表1.总金额)及其
SUM(表1.总金额)及其计数
- 总金额(表1.总金额),客户类型为本地、州际、国际。和它的计数
- 年度金额(表1.总金额)及其计数
- 每月金额(表1.总金额)及其计数
更新2
overall_total_amount -- overall_total_count -- over_total_amount_this_year - overall_total_count_this_year
年度订单总数金额和计数。。即月份(一月、二月、三月和所有月份)
每月订单总数金额和计数。。(该日期为本月每天的日期)
订单总额和客户数量-即>
client_type1 > total_amount_over_all > total_count
client_type2 > total_amount_over_all > total_count
等等。。
每年和每月都一样
client_type1 > jan_total_amount > total_count
client_type1 > feb_total_amount > total_count
client_type2 > jan_total_amount > total_count
client_type2 > feb_total_amount > total_count
同样适用于月,其中月将取代日日期
///这仅适用于一个模块表,但
我有12-13个这样的。。
我知道如何做到这一点是独立的查询和php函数。。但是考虑在单个查询中执行此操作。。
因为所有的表都会进行相同的计算,只是会根据存储在表中的数据返回不同的数据。我要计算的字段也有相同的名称,所以如果我为每个表复制相同的查询12-13次,并最终更改表名以显示输出,那将是非常愚蠢的。。在那里,我正在寻找一种方法,在这种方法中,我可以提取动态表上所需的所有数据,并在每个数据前面分配一个id和它们各自的表名,然后通过双重分组对其执行查询。。
希望在单个页面(即仪表板页面)上以单独的分区/块显示所有内容。所有表格都有total_amount和created、dispatched等日期字段
所以在仪表板上,我可以随时给他们打电话。。另外,对于一些会有数组,对于一些会有单字段结果。。在sql或php中,在单个函数/查询中两者都有可能吗?
like-对于sales total,只有一个字段给出结果,对于sales montly、categorywise或clientwise,将有一个数组列表。。
我认为解决方案是编写一个查询来显示类似这样的结果(不确定我说的是否可能)
日期--客户端类型--类别--总金额--计数--状态--模块组--(动态\u id)
然后在此表上再运行一个查询,如
-将客户端类型为1的所有id计数为总客户端类型
-将所有总金额相加,其中模块组为订单组,年为当前年度组(按月)(将输出月数组)
我不知道如何创建所需输出的布局,这就是我在文本中解释的原因
更新-3
我想要这样的输出。。我在同一个表中有日期数据和总计。客户机和状态按照与行一起获取的特定顺序存储。
如果我得到这个,那么我想对这个执行查询。。如-sum(total_amount),其中年份为2019年,从表中派生的_为零售订单,则选择状态为dispatched且从表中派生的为ecom的所有
更新4
我还有一个问题与此有关
SELECT
DATE_FORMAT(o.created_on, '%d-%b-%Y') AS retail_daily_date,
SUM(o.total_amount) as retail_daily_total ,
COUNT(o.total_amount) as retail_daily_count
FROM
orders o
LEFT JOIN client c ON c.client_id = o.client_id
WHERE
YEAR(o.created_on) = YEAR(CURRENT_DATE())
AND MONTH(o.created_on) = MONTH(CURRENT_DATE())
AND c.client_type = 3
AND o.is_deleted = 0
GROUP BY
DATE_FORMAT(o.created_on, '%d-%m-%Y')
ORDER BY
DATE_FORMAT(o.created_on, '%d-%Y-%m')
它将按日期输出每日订单总数
日期总数
2010年1月1日5000
2000年1月2日6
等等
我希望所有客户都有一张桌子。。因此,每次我编写相同的查询时,只需更改客户机类型1、2、3、4,以此类推即可得到结果
如何在一个查询中做到这一点 如果您向我们展示您正在讨论的表的模式,它将有助于为您提供一些信息assistance@RiggsFolly刚刚更新了这个问题。。请检查将文本张贴到问题中总是更好的,图片不是那么有用。特别是当它实际上切断了一些列时,请参见SHOW CREATE TABLE YourTableName然后复制/粘贴到您的问题您使用什么来发出此命令如果您向我们展示您正在谈论的表的模式,这将有助于为您提供一些信息assistance@RiggsFolly刚刚更新了这个问题。。请检查将文本张贴到问题中总是更好的,图片不是那么有用。特别是当它实际上切断了一些列时,请参见SHOW CREATE TABLE YourTableName然后复制/粘贴到您的问题您使用什么来发出此命令
SELECT
DATE_FORMAT(o.created_on, '%d-%b-%Y') AS retail_daily_date,
SUM(o.total_amount) as retail_daily_total ,
COUNT(o.total_amount) as retail_daily_count
FROM
orders o
LEFT JOIN client c ON c.client_id = o.client_id
WHERE
YEAR(o.created_on) = YEAR(CURRENT_DATE())
AND MONTH(o.created_on) = MONTH(CURRENT_DATE())
AND c.client_type = 3
AND o.is_deleted = 0
GROUP BY
DATE_FORMAT(o.created_on, '%d-%m-%Y')
ORDER BY
DATE_FORMAT(o.created_on, '%d-%Y-%m')