В приведенном выше ответе кто-то спросил, есть ли способ получить файл md5 для файлов размером более 5G.
Ответ, который я мог бы дать для получения значения MD5 (для файлов размером более 5G), состоял бы в том, чтобы либо добавить его вручную в метаданные, либо использовать программу для загрузки, которая добавит эту информацию.
Например, я использовал s3cmd для загрузки файла и добавил следующие метаданные.
$ aws s3api head-object --bucket xxxxxxx --key noarch/epel-release-6-8.noarch.rpm
{
"AcceptRanges": "bytes",
"ContentType": "binary/octet-stream",
"LastModified": "Sat, 19 Sep 2015 03:27:25 GMT",
"ContentLength": 14540,
"ETag": "\"2cd0ae668a585a14e07c2ea4f264d79b\"",
"Metadata": {
"s3cmd-attrs": "uid:502/gname:staff/uname:xxxxxx/gid:20/mode:33188/mtime:1352129496/atime:1441758431/md5:2cd0ae668a585a14e07c2ea4f264d79b/ctime:1441385182"
}
}
Это не прямое решение с использованием ETag, но это способ заполнить нужные метаданные (MD5) таким образом, чтобы вы могли получить к нему доступ. Он все равно будет терпеть неудачу, если кто-то загрузит файл без метаданных.
SELECT
COUNT( CASE WHEN n1 = 'J' THEN 1 END ) AS t1,
COUNT( CASE WHEN n2 = 'C' THEN 1 END ) AS t2,
COUNT( CASE WHEN n3 = 'K' THEN 1 END ) AS t3
FROM test
Используя COUNT(CASE...)
, можно получить количество двух столбцов от единственной таблицы, даже когда условия для обоих отличаются (например: Получите количество J из n1 столбца и количество C из n2 столбца и так далее..)
Таблица: тест
+----+----+----+----+
| id | n1 | n2 | n3 |
|----+----+----+----+
| 1 | J | C | K |
|----+----+----+----+
| 1 | J | C | F |
|----+----+----+----+
| 1 | J | K | C |
|----+----+----+----+
| 1 | K | K | C |
|----+----+----+----+
Результат:
+----+----+----+
| t1 | t2 | t3 |
|----+----+----+
| 3 | 2 | 1 |
|----+----+----+