LeetCode: 1193 ежемесячная транзакция - как группа на 1, 2 работает в SQL -запросе [дубликат]MySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 LeetCode: 1193 ежемесячная транзакция - как группа на 1, 2 работает в SQL -запросе [дубликат]

Сообщение Anonymous »

Я работаю над проблемой LeetCode «Ежемесячные транзакции I» и имею вопрос о решении, которое я обнаружил.

Код: Выделить всё

+------+---------+----------+--------+------------+
| id   | country | state    | amount | trans_date |
+------+---------+----------+--------+------------+
| 121  | US      | approved | 1000   | 2018-12-18 |
| 122  | US      | declined | 2000   | 2018-12-19 |
| 123  | US      | approved | 2000   | 2019-01-01 |
| 124  | DE      | approved | 2000   | 2019-01-07 |
+------+---------+----------+--------+------------+
< /code>
Мое решение, которое работает, как и ожидалось, использует этот запрос: < /p>
SELECT
DATE_FORMAT(trans_date, '%Y-%m') AS month,
country,
COUNT(*) AS trans_count,
SUM(IF(state = 'approved', 1, 0)) AS approved_count,
SUM(amount) AS trans_total_amount,
SUM(IF(state = 'approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY DATE_FORMAT(trans_date, '%Y-%m'), country;
ожидаемый выход

Код: Выделить всё

Output:
+----------+---------+-------------+----------------+--------------------+-----------------------+
| month    | country | trans_count | approved_count | trans_total_amount | approved_total_amount |
+----------+---------+-------------+----------------+--------------------+-----------------------+
| 2018-12  | US      | 2           | 1              | 3000               | 1000                  |
| 2019-01  | US      | 1           | 1              | 2000               | 2000                  |
| 2019-01  | DE      | 1           | 1              | 2000               | 2000                  |
+----------+---------+-------------+----------------+--------------------+-----------------------+
Я затем наткнулся на решение другого пользователя, которое использует группу по , и я запутался в том, как оно работает:

Код: Выделить всё

SELECT
DATE_FORMAT(trans_date, '%Y-%m') AS month,
country,
COUNT(*) AS trans_count,
SUM(state = 'approved') AS approved_count,
SUM(amount) AS trans_total_amount,
SUM(IF(state = 'approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY 1, 2;
Специально, я смущен группой 1, 2 Поскольку первая и вторая столбцы таблицы транзакций - это идентификатор и страна, как эта группа запросов по Trans_date и Country
Может ли кто -то прояснить, как позиционная группа работает в этом контексте?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -sql-query
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Pandas Leetcode 1193. Ежемесячные транзакции I [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • #1193 — Неизвестная системная переменная «lc_messages» при попытке войти в phpmyadmin.
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Ежемесячная заполняемость таблицы MySQL
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Совокупная еженедельная, ежемесячная, квартальная доходность от ежедневных доходов и совокупная ежедневная прибыль.
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Pandas ежемесячная прокатка
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «MySql»