【发布时间】:2021-01-04 02:52:00
【问题描述】:
我对 SQL 函数的问题是,我经常混合使用 SUM / COUNT,甚至可以在其中放置 WHERE 子句和 GROUP BY 的简短版本,SQL 是我的缺陷之一。
好的,现在这是我当前的问题,我需要创建一个 SQL 函数(在我的 PHP 模型中)来获取我“今天”的订单数量及其总成本,但我需要按国家/地区分隔结果(对不起我的英语),例如我想要的结果应该是这样的(假设我今天有 20 个订单):
美国:15 个订单(共 288 美元),加拿大:5 个订单(共 94 美元)
我尝试了很多东西,唯一没有给我错误的两个是这两个(但与我需要的结果相去甚远):
SELECT sum(o.amount) AS totalmoney, p.name, p.id, p.name_clean, p.iso_code
FROM orders AS o
LEFT JOIN customers AS c ON o.id_customer = c.id
LEFT JOIN countries AS p ON c.country = p.id
WHERE DATE(o.date_create) = CURDATE()
SELECT sum(o.amount) AS totalmoney, o.date_create, p.name, COUNT(p.id) AS totalpays,
p.name_clean, p.iso_code, c.country
FROM orders AS o
LEFT JOIN customers AS c ON o.id_customer = c.id
LEFT JOIN countries AS p ON c.country = p.id
GROUP BY o.date_create
我的三个表是(表名:列有用):
国家:id - 名称
客户:id - country_id
订单:id - id_customer - 金额 ($) - date_create
你能帮帮我吗?
感谢您的宝贵时间。
------------- 使用我使用的答案进行编辑 ---------------
感谢所有参与并帮助我更好地理解 SQL 的人。
SELECT sum(orders.amount) total, countries.name
FROM orders
INNER JOIN customers ON orders.id_customer = customers.id
INNER JOIN countries ON countries.id = customers.country_id
WHERE orders.date_create = ?
GROUP BY customers.id
这正是我需要的。
【问题讨论】:
-
能否请您提供三个表格的完整结构和一些示例数据以供我们使用,以便我们更清楚地了解情况并更好地帮助您?